-
Ну вот хочется мне, допустим, чему-нибудь там что-нибудь присвоить, или кого-нибудь там вызвать. Бывает. Так нет же. Приват. Не трожь руками генофонд. А почему?
Вот модуль. Сделанный года 4 назад. Когда и мысли не возникало о необходимости вызова метода ХХХ. Ну, не было такой задачи. А теперь - модуль переписывать. Немного, но обидно.
Да, я понимаю свою заботу 4-летней давности. Все внутреннее внутрь. Как же. А вот зачем? Чтобы глупый пользователь не вызвал? Ну, ёлы палы, назвать этот метод не ХХХ, а _ХХХ, или _DO_NOT_CALL_XXX для совсем дебилов. Ну все равно ж совсем дебил вызовет. Исходники поправит накрайняк (они, разумеется, доступны). А умный не вызовет. Или хотя бы подумает, и вызовет осознанно.
Ну, зачем, зачем сознательно ограничивать свободу??????
-
> Ну, зачем, зачем сознательно ограничивать свободу??????
Свобода есть разумные ограничения - вроде Линкольн. Жень это судьба такая.
-
Перенеси в protected, какие проблемы?
-
> Перенеси в protected, какие проблемы?
Суть она в багах - private только в том - же файле перекрывать и повышать видимость можно.
-
> Свобода есть разумные ограничения - вроде Линкольн.
Дисциплина, как осознаная необходимость.
-
TUser © (15.01.09 12:50)
>Вот модуль. Сделанный года 4 назад. Когда и мысли не возникало о >необходимости вызова метода ХХХ. Ну, не было такой задачи. А теперь - >модуль переписывать. Немного, но обидно.
В таком случае лучше переписать.
Поверь - ты как автор модуля и ты как его пользователь - это совсем разные люди. :-)
-
> Не трожь руками генофонд. А почему?
потому что выйдет следующая версия дельфи и если ты её будешь использовать то тебе придется сихронизировать свои изменения с изменениями котжира.
> Ну, зачем, зачем сознательно ограничивать свободу??????
если есть исходники, то помещение метода в private ничуть не ограничивает твою свободу в его вызове, ведь сорцы ты всегда можешь поменять. с другой строрны, если ты не хочешь вызывать этот метод(то есть согласен с придуманными тобой же соглашениями), то лудше чтобы за коректностью вызова следил компилер. Потому что через 4 месяца ты забудешь, что решил не вызывать извне этот метод.
-
А сделать для него обёртку в зоне видимости public? И первоначальная функциональность сохраняется, и цели достигнуты.
-
не в версиях дело, а в подходе. для одиночки может долго сходить с рук такое рукоблудство, а в команде будет пушной зверёк очень скоро. ограничивать свободу надо хотябы затем, чтобы установить правила и обозначить рамки, которые приведут к предсказуемости и управляемости. Если предсказуемость и/или управляемость будет потеряна будет загублен проект.
-
> Marser © (16.01.09 01:06) [7]
О и тёзка появился на форуме. Привет Серёга. Сколько лет сколько зим!
P.S. Может и газ теперь пойдёт? :)
-
> Германн © (16.01.09 01:10) [9] > > > > Marser © (16.01.09 01:06) [7] > > О и тёзка появился на форуме. > Привет Серёга. Сколько лет сколько зим!
Да, здрасте :-) Тут уж добрая традиция, как я с полуночи ни объявлюсь, меня тёзка всегда встретит... И напоит... Виртуально :-))
-
> Marser © (16.01.09 02:11) [10] > Тут уж добрая > традиция, как я с полуночи ни объявлюсь, меня тёзка всегда > встретит... И напоит... Виртуально :-))
Да не оскудеет чаша твоя, о тезка :-)
-
> TUser © (15.01.09 12:50)
Вы как автор шедевра логично желаете, чтобы шедевр работал в соответствии с обещаным интерфейсом и, что очень немаловажно - стабильно. Потому часть полей/методов благоразумно засунули в privаte, чтобы никто через опубликованный интерфейс не мог нарушить целостность шедевра.
Вы как пользователь шедевра, разумеется, хотите выжать из него максимум функциональности. Разумеется в том числе и то, что автор шедевра не выставил наружу. Умышленно он это не выставил, чтобы пользователь не испортил чего, или просто недодумал что это будет полезно - пользоватлю то не узнать никак, но раз нету интерфейса - то и привет.
В общем и целом - это 2 разных подхода. Один мы видим в VCL, где все хорошо, но пока стандартная функциональность тебя устраивает. Ну чуть зазочешь шаг вправо-влево - и приехали. Или все переписыывай от TComponent или извращайся обходными медотами, фактически находи какие-нибудь лазейки (зачастую это просто перехват сообщений), постоянно натыкаясь на все новые траблы и недоступностью очередной внутренней переменной. И вторая парадигма, ее можно наблюдать в MFC, например: в классе есть минимальная обертка, спрятано - минимум, все остальное торчит наружу, вызывать нужные методы в нужном порядке, следить за внутренней целостностью - и т.д.
Вообще-то пооббившить сильно о VCL в попытках "немного" кастомизировать поведение стандартных компонент склюняюсь к тому, что первый метод красив только в теории, на практике - одно мучение. С другой строны можно понять авторов библиотек: они ведь желают, чтобы их продукт был стабилен в использовании, потому и прячут все.
-
Я все-таки не понимаю, чни private лучше соглашения об именованиях. Дурак (если он дурак) все равно использовать будет. Умный тоже. Только подумает сначала. Называли бы все скрываемые методы с подчеркивания ...
-
> Ну, зачем, зачем сознательно ограничивать свободу??????
Инкапсуляция - кит ООП. Тебе ничего не мешает объявить Friend процедуру в модуле того класса.
-
> TUser © (16.01.09 10:27) [13] > Я все-таки не понимаю, чни private лучше соглашения об именованиях.
Не, ну так уже несерьезно. Это уже поделки получатся, которые вскоре погрязнут в собственном г.
-
Не-г плучается, когда пишут умные люди. Умные люди не будут вызывать заподчеркнутые методы, не подумав.
-
Вот прикинь, сел в авто, дернул ручку - а оно рассыпалось... Умный скажет "какого хрена ты ее дергал, она ж красная!" Прав ли он будет?
Так и тут.
Вот в космическом корабле или тама самолете - да, там эргономика-эргономикой, но, просто жизненно необходимо иметь доступ ко всему функционалу, потому и пользуются или только специально обученные люди, знающие о граблях и правильной последовательности.
Впрочем, это больше философская категория. Каждый делает так, как считает нужным, причем нельзя сказать, что какой-либо из подходов более правильный.
-
Собственно, не нравится инкапсуляция - не пользуйся :) Делай всё public и не парься. Заодно много новых и интересных слов узнаешь от людей, которым выпадет с твоим кодом работать :)
-
> Не-г плучается, когда пишут умные люди. Умные люди не будут > вызывать заподчеркнутые методы, не подумав.
от подчеркиваний это не зависит
|