powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Strict private
25 сообщений из 95, страница 1 из 4
Strict private
    #39614279
Следует ли считать хорошей практикой использование strict private вместо private ?
...
Рейтинг: 0 / 0
Strict private
    #39614294
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет смысл использовать если ты делаешь платные компоненты и распространяешь в dcu
Мне кажется protected - самое то.
...
Рейтинг: 0 / 0
Strict private
    #39614297
SOFT FOR YOUИмеет смысл использовать если ты делаешь платные компоненты и распространяешь в dcu
Мне кажется protected - самое то.

При чем тут "protected и "распространение в dcu"? Речь о strict private .
...
Рейтинг: 0 / 0
Strict private
    #39614298
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты делаешь классы исключительно для внутреннего потребления - сугубо пофиг.
У классов для сторонних пользователей любое private смердит, поскольку не позволяет
использовать полиморфизм ради которого (в том числе) классы и задумывались.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39614304
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактики,

Притом, что private вообще не нужен. Ни обычный, ни strict.
...
Рейтинг: 0 / 0
Strict private
    #39614310
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еретики... и private нужен, и strict. Я везде применяю strict, чтобы в подсказках лишние методы не маячили.
...
Рейтинг: 0 / 0
Strict private
    #39614320
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУ классов для сторонних пользователей любое private смердит, поскольку не позволяет использовать полиморфизм ради которого (в том числе) классы и задумывались.

И каким же образом доступность кишок класса связана с полиморфизмом?

Вообще. Я вижу так: public и protected - это интерфейс, API. Менять его может быть затруднено и болезненно. А private - это внутренняя реализация, которую можно менять как вздумается. И без этой области свободных манипуляций внесение изменений в класс взрастит такой геморрой у разработчика, что ну вас нафиг с такими идеями.
...
Рейтинг: 0 / 0
Strict private
    #39614326
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2И каким же образом доступность кишок класса связана с полиморфизмом?

Приватные методы нельзя оверрайдить. К приватным полям нельзя достучаться. Изменить
поведение базового класса, автор которого злоупотреблял приватностью, невозможно.
Полиморфизм недоступен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39614330
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактикиСледует ли считать хорошей практикой использование strict private вместо private ?Следует
...
Рейтинг: 0 / 0
Strict private
    #39614335
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактикиСледует ли считать хорошей практикой использование strict private вместо private ?
Если у вас на каждый класс отдельный unit, то необязательно.
Если у вас более одного класса в модуле, и они могут пересекаться, то лучше strict.

Иначе от такого вы не будете защищены. К тому же IntelliSense не будет показывать мусор из strict private
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 TA = class
  private
    F1: string;
  end;

  TB = class
  private
    procedure Test(aA: TA);
  end;

{ TB }

procedure TB.Test(aA: TA);
begin
  aA.F1 := 'asd';
end;
...
Рейтинг: 0 / 0
Strict private
    #39614336
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактикиСледует ли считать хорошей практикой использование strict private вместо private ?Нет.
...
Рейтинг: 0 / 0
Strict private
    #39614348
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovПриватные методы нельзя оверрайдить. К приватным полям нельзя достучаться. Изменить
поведение базового класса, автор которого злоупотреблял приватностью, невозможно.
Полиморфизм недоступен.

Полиморфизм вполне себе доступен в рамках, отведенных для этого автором. Всё, что свыше этого, - от лукавого либо результат совсем уж убогой реализации. А вот доступ к кишкам класса куда вреднее. Например:
Код: pascal
1.
2.
3.
4.
5.
6.
 Tclass = class
 private 
  FSomeObj: TObject
 public
  property SomeObj: TObject read FSomeObj;
 end;


При этом FSomeObj всегда создается в конструкторе и потому предполагается, что всегда не nil. Но условному апологету безграничного полиморфизма не нравится доступ по свойству, и он использует FSomeObj. А потом автор понимает, что FSomeObj нужен далеко не всегда и не сразу, поэтому встраивает создание перед использованием, меняя объявление на
Код: pascal
1.
  property SomeObj: TObject read GetSomeObj;


И вот тут апологет ловит AV at address $000000 и идет курить бамбук.
...
Рейтинг: 0 / 0
Strict private
    #39614351
Действительно, странно противопоставлять полиморфизм механизмам инкапсуляции. :)
...
Рейтинг: 0 / 0
Strict private
    #39614360
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2Полиморфизм вполне себе доступен в рамках, отведенных для этого автором. Проблема в том, что автор, отдавая компоненты на сторону, обычно сам не знает, что именно может потребоваться перекрыть.
Мне пару раз приходилось переписывать штатные VCL-компоненты только лишь потому, что авторы не добавили директиву virtual в одном месте.
Даже в приведенном примере лучше сразу делать виртуальный геттер.
...
Рейтинг: 0 / 0
Strict private
    #39614371
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не просто же так частные поля делают. И закрывают информацию внутри класса. Так то можно, конечно, всё наружу или почти наружу вытащить, говоря - делайте что хотите, сломаете - ваши проблемы. Только, мне кажется, это плохой подход. Вообще. В крайнем случае можно сырцы поправить. А код без исходников лучше вообще не применять.
...
Рейтинг: 0 / 0
Strict private
    #39614377
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonВ крайнем случае можно сырцы поправить.Эта практика намного хуже, напрочь убивает идею сопровождения.
...
Рейтинг: 0 / 0
Strict private
    #39614384
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Соколинский БорисmakhaonВ крайнем случае можно сырцы поправить.Эта практика намного хуже, напрочь убивает идею сопровождения.
в реальной жизни гораздо быстрее исправить ошибку в исходниках,
чем бесконечно переписываться с аффтаром, который может бюыть вообще недоступен
...
Рейтинг: 0 / 0
Strict private
    #39614391
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator, это понятно.
Но как же бесит при этом муторная сверка исходников после обновления...
...
Рейтинг: 0 / 0
Strict private
    #39614392
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем противникам strict private рекомендую вспомнить о class sealed, он вообще явно запрещает любых наследников класса)))) шах и мат полиформизму и его безумным поклонникам))) strict private вызывает ненависть? храните все в public!)))
...
Рейтинг: 0 / 0
Strict private
    #39614394
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
asutp2всем противникам strict private рекомендую вспомнить о class sealed, он вообще явно запрещает любых наследников класса)))) шах и мат полиформизму и его безумным поклонникам))) strict private вызывает ненависть? храните все в public!)))
пиши процедурно, безумец, не стесняйся
...
Рейтинг: 0 / 0
Strict private
    #39614398
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorasutp2всем противникам strict private рекомендую вспомнить о class sealed, он вообще явно запрещает любых наследников класса)))) шах и мат полиформизму и его безумным поклонникам))) strict private вызывает ненависть? храните все в public!)))
пиши процедурно, безумец, не стесняйсяпочему же, я как раз сторонник классов, но считаю, что ВСЕГДА разрешать давать наследникам перекрывать ВСЕ свойства и методы мягко говоря неправильно. Так вообще можно дойти до того, что будет единственная ветка наследования класс1<-класс2<-класс3<-....<-класс9999999999999999
...
Рейтинг: 0 / 0
Strict private
    #39614400
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
asutp2defecatorпропущено...

пиши процедурно, безумец, не стесняйсяпочему же, я как раз сторонник классов, но считаю, что ВСЕГДА разрешать давать наследникам перекрывать ВСЕ свойства и методы мягко говоря неправильно. Так вообще можно дойти до того, что будет единственная ветка наследования класс1<-класс2<-класс3<-....<-класс9999999999999999
ты же назвал сторонников полиморфизма безумными
а ведь полиморфизм это другое, не то, что ты только что описал
...
Рейтинг: 0 / 0
Strict private
    #39614402
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буч - это голова. И Фаулер - это голова. Фаулер и Буч - это две головы. Читайте классиков, вопросы отпадут сами собой.
...
Рейтинг: 0 / 0
Strict private
    #39614407
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorasutp2пропущено...
почему же, я как раз сторонник классов, но считаю, что ВСЕГДА разрешать давать наследникам перекрывать ВСЕ свойства и методы мягко говоря неправильно. Так вообще можно дойти до того, что будет единственная ветка наследования класс1<-класс2<-класс3<-....<-класс9999999999999999
ты же назвал сторонников полиморфизма безумными
а ведь полиморфизм это другое, не то, что ты только что описаля назвал безумными не тех, кто адекватно использует различные области видимости в классах/необходимые элементы для перекрытия в зависимости от задачи, а тех, кто желает изменять все что вздумается наследному классу и ненавидит strict private))).
...
Рейтинг: 0 / 0
Strict private
    #39614410
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо как же бесит при этом муторная сверка исходников после обновления...

Дифф в помощь. Автоматический или руками пробежаться. Винмержем я, например, инди свожу за час-полтора. У меня правок десятка два мест. Шансов, что их добавят, я думаю, около нуля. Быстрее руками свести. Особенно если надо не часто.
...
Рейтинг: 0 / 0
25 сообщений из 95, страница 1 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Strict private
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]