LINUX.ORG.RU

Public Морозов


0

1

Думаю многие знают этот антипаттерн в программировании. Но то ли из за того что я любитель, а не профессионал. И предпочитаю минимально использовать ООП. Я с этой ситуацией не сталкивался.

Для тех кто не в теме

класс, который по запросу выдаёт доступ ко всем, даже приватным, свойствам класса-родителя. Нельзя сказать, что это всегда плохо.

При каких обстоятельствах вы с этим сталкивались?

☆☆☆

Последнее исправление: rezedent12 (всего исправлений: 1)

вместе с божественным объектом.

nanoolinux ★★★★
()

При каких обстоятельствах вы с этим сталкивались?

когда достигнуты пределы гибкости API приходится либо API допиливать, либо применять костыли.

true_admin ★★★★★
()

Нельзя сказать, что это всегда плохо.

инкапсуляция же. зачем тогда вообще ооп использовать если можно сделать кучу глобальных переменных и не парится. только тогда устанешь везде и всё исправлять если придётся эти глобальные переменные как-то менять.

nanoolinux ★★★★
()

На самом деле это зависит от схемы разработки. Любой программист для начала ваяет moc в паблике, делает функционал, а уже потом формирует схему доступа. Если у тебя в продакшене есть паблики, которых ты не хотел, то ССЗБ.

класс, который по запросу выдаёт доступ ко всем, даже приватным, свойствам класса-родителя

Ну и да, через ревлекшн можно получит доступ ко всему, но что это делает на лоре?

anonymous
()
Ответ на: комментарий от anonymous

Любой программист индус для начала ваяет moc в паблике, делает функционал, а уже потом формирует схему доступа.

Fixed.

По теме: такие жуткие костыли не нужны при грамотно продуманной архитектуре.

unfo ★★★★★
()
Ответ на: комментарий от rezedent12

С другой стороны, всего не предусмотришь.

Не спорю. Но доводить до такого нельзя в любом случае, связность и запутанность кода увеличиваются во много раз.

unfo ★★★★★
()

У нас вот вообще песня, а не софт: сначала наделали огороженных классов, а потом начали плодить френдов. И теперь у каждого класса у нас по 15 френдов. Посмотришь на такое, и паблик морозов начинает казаться идеальным архитектурным решением.

morse ★★★★★
()

не сталкивался, ибо java, чаще попадаются классы-шлюхи у которых все унутренее состояние можно поюзать да и из другого потока.

Deleted
()

Не сталкивался, но описание очень похоже на промежуточный костыль при разбиении большой системы на отдельные модули. У нас сейчас такое происходит и признаки сабжа присутствуют.

winlook38 ★★
()
Ответ на: комментарий от rezedent12

на практике io тормозит настолько сильнее что оптимизации такого рода это херня.

Другое дело если у тебя действительно Задача с большой буквы, но там тебе профайлер подскажет что тормозит, а вот так вот заранее оптимизировать - маразм.

Deleted
()

Использую для фиксов утечек памяти в одной из версий MFC (оно живое и шевелится!)

Uter
()

класс, который по запросу выдаёт доступ ко всем, даже приватным, свойствам класса-родителя

Что эта ненаучная фантастика делает в devel?

geekless ★★
()
Ответ на: комментарий от Chaser_Andrey

Суровая реальность состоит в том, что к private имеет доступ только тот класс, где они объявлены. Если конечно мы говорим за default language.

geekless ★★
()
Ответ на: комментарий от geekless

ну мало ли, может он по смещению от this к приватным полям обращается

Harald ★★★★★
()
Ответ на: комментарий от geekless

Копипаста из лурка:

/*
Чтобы получить доступ к private- или protected- членам класса, в C++ можно иногда увидеть паттерн «Паблик Морозов», открывающий доступ к защищенным данным и методам:
*/

#define private public
#define protected public
#include <header.h>
#undef private // А вот пока анонимус не дописал undef это и было грязным хаком.
#undef protected

// ...

Header *h = new Header();
int x = h->m_value; // m_value в прошлой жизни - private

//Более чистый способ — добавиться в «друзья» всех классов:

#define private friend class Descendant; private // приписываем friend class Descendant во все классы
#include <Ancestor.hpp>
#undef private

// ...

Descendant *h = new Descendant();
int x = h->m_value; // m_value в прошлой жизни - private из Ancestor

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от geekless

Ясное дело, что в этом контексте, они только философски приватные, примерно как private video.

anonymous
()
Ответ на: комментарий от geekless

Увы, иногда приходится разгребать такое говно после тех, кого выгнали.

Chaser_Andrey ★★★★★
()

Это значит плохая архитектура. Не нужно к такому привыкать.

hibou ★★★★★
()
Ответ на: комментарий от Uter

Кстати да. В мелком ынтерпрайзе люди всегда хотят сделать что нибудь что бы стать незаменимыми. А всё из за того что никаких гарантий нет.

rezedent12 ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.