|
|
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Не устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:09 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Или заметить private на сущность internal - можешь пользоваться, но будь внимателен. Как по мне private разрушает одну из концепций ООП - наследование. А если учесть о качестве дизайна классов в большинстве проектов, то зачастую очень сложно добавить новое поведение существующим классом. Из-за чего используем костыли - рефлекшн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:15 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror, а где же код? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:25 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror, была бы здесь Барбара Лисков - старушка-б не выдержала и запустила-бы в тебя своей вставной челюстью а потом побила костылём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:39 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, ха, запросто пакет WatchService чуть больше, чем полностью. Например, он при регистрации новой папки, может не поймать файлы, которые создавались во время регистрации. Я это исправил, но мне пришлось кучу рефлекшн кода задействовать. Нет, пожалуйста, если ты какой-нибудь Брайн Страуструп, юзай private, да и то, сомневаюсь, что осилишь все возможные варианты развития событий. А большинство, то, прогрммеров лепят этот private, по умолчанию, по крайне-мере eclipse его всегда лепит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:58 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Я еще иногда делаю transient поля. Вот такой вот я злодей. А нефих... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:02 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror, ты свой класс покажи) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:02 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, transient это понятно, к этому претензий нет ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:03 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, правильно) Ты же родитель своего отпрыска-класса) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:04 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Всё должно быть private и final (в редких случаях final можно опустить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:04 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, а чего его показывать? ) У меня, что не public - protected, private не использую, но конечно хотелось бы что-то типа internal, замещающий protected и private одновременно. Хоть свой ЯП мути на базе Java, я бы еще с getter/setter разобрался ) А то понавыпускали всяких Kotlin, Ceylon - один выпендреж ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:09 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, а как мне потом ваши классы расширять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:10 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, планетка то маленькая, а интернет еще меньше, вот натолкнусь на ваши классы и буду матюгаться ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:11 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror, ну, а если надо только через Getter Setter иначе всё сломаеццо)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:12 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororFor All, планетка то маленькая, а интернет еще меньше, вот натолкнусь на ваши классы и буду матюгаться )Наврядли - не будете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:12 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororFor All, а как мне потом ваши классы расширять?Словом extend ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:13 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, чему там ломаться? Я же ваш код перед этим изучу, а потом полученную конструкцию еще отдебажу и тесты прогоню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:13 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror. Первое. На самом деле можно ничего не писать. Будет package-видимость. Это аналог private но чуть шире. Пользуйся ради своей собственной лени. И второе. Если подходить с позиции бизнес-кодеров которые клепают только бизнес-сущности то пофиг. Но если переменная экземпляра класса является участником АЛГОРИТМА то я как создатель этого алгоритма ЖЕЛАЮ чтобы она была СКРЫТОЙ частью алгоритма и не светилась как поле вызывая соблазн потрогать себя грязными руками и уж тем более накрутить на ней логику которую я в производном классе всё равно переопределю. Вот такой я злодей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:14 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For AllВсё должно быть private и final (в редких случаях final можно опустить) и static ))) /это юмор/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:15 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororPetro123, а чего его показывать? ) У меня, что не public - protected, private не используюВсё что не public обязано быть private. protected - это тот же public (с некоторыми ограничениями), и его нужно примененять обосновано. Так что у вас вообще всё public выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:16 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, ну и юзайте getter/setter кто вам не даёт, только вот не надо для обычной структуры генерить в IDE код доступа к полям ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:16 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororPetro123, чему там ломаться? Я же ваш код перед этим изучу, а потом полученную конструкцию еще отдебажу и тесты прогоню.А зачем? Не проще ли к нему (стороннему коду) относиться как к чёрному ящику? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:17 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, у вас устаревшие знания, всё течет, всё меняется, как по мне достаточно public и internal, причем public указывать явно не надо, просто объявил поле, метод - оно public, объявил internal, предупредил пользователя ваших классов. Я ведь с этим не только в WatchService сталкиваюсь, с той же Tapestry намучался, когда нужно было запилить свою функциональность на базе существующих классов. Но нет, все что не public - private и иди мучайся через рефлекшн или copy-paste. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:20 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, не проще, когда достигаешь определенного опыта, начинает хотеться изменить код этого черного ящика, т.к. тебя что-то может не устраивать. Можно конечно идти и делать pull-request но это долго и муторно, да еще могут и не принять, тогда fork, а это еще тот гимор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:22 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Fororнужно было запилить свою функциональность на базе существующих классов. ну, т.е. ты специалист по нетрадиционному сексу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:26 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororFor All, у вас устаревшие знания, всё течет, всё меняется, как по мне достаточно public и internal, причем public указывать явно не надо, просто объявил поле, метод - оно public, объявил internal, предупредил пользователя ваших классов.Можно ссылочку на источник новых и свежих знаний? Или, может, internal - это ваше личное изобретение? Fororкогда достигаешь определенного опыта, начинает хотеться изменить код этого черного ящика, т.к. тебя что-то может не устраивать.Когда достигаешь определенного опыта, чёрный ящик можно написать самому, такой какой нужен, чтобы устраивал а не пытаться мотоциклом шурупы откручивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:30 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Давайте пойдем от обратного. Вспомним из практики. Где и когда в стандартных java-библиотеках, открытых библиотеках типа apache commons .... e.t.c. и прочего опенсорца вам вдруг (!) внезапно понадобилось значение приватной переменной базового класса? Я таких ситуаций не помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:32 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, аха ) всё понятно, миллионы леммингов не могут ошибаться ) internal не моё личное изобретение, просто всё больше сталкиваюсь с проектами, где классы делают не приватными, а кладут в пакеты internal, и это правильное движение, я лишь подумал, что это можно развить на классы, но конечно, это радикальное решение, в java такого не появится уж точно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:35 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, ой, да запросто, есть такая либа jansi, так я её расширил своим классом xansi, но там вроде не пришлось использовать рефлекшн, но я точно не помню, вроде всё равно были трудности из-за этого private. А стандартные apache-commons либы, это в основном набор статичных методов и полей, там то, особо менять ничего и не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:40 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Если уж на то пошло, то в стандартных библиотеках такой пример есть - theUnsafe в sun.misc.Unsafe. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:40 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, авторНо если переменная экземпляра класса является участником АЛГОРИТМА то я как создатель этого алгоритма ЖЕЛАЮ чтобы она была СКРЫТОЙ частью алгоритма и не светилась как поле вызывая соблазн потрогать себя грязными руками и уж тем более накрутить на ней логику которую я в производном классе всё равно переопределю. Вот такой я злодей. Ха, да пожалуйста, тогда зачем вы вообще сырцы открываете? Тут то речь про open-source. Делайте бинарник и вообще забот не будет ) А тот, кто захочет потрогать - всё равно потрогает, в крайнем случае copy-past'ом или дизассемблером ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:49 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Forormayton, ой, да запросто, есть такая либа jansi, так я её расширил своим классом xansi, но там вроде не пришлось использовать рефлекшн, но я точно не помню, вроде всё равно были трудности из-за этого private. Ану ану. Что за трудности в этом Джанси? Расскажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 19:58 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Мне тоже кажется, что при создании класса невозможно учесть все способы его дальнейшего использования. И + к этому, private снижает гибкость при наследовании. И вообще, вот типа инкапсуляция, но при наследовании все-равно нужно изучать детально внутренности базового(вых) классов, так что по-моему наследование и инкапсуляция противоречат немного). Я за то, чтобы убрать private и protected, а сделать inner как и выше предлагали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 23:11 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Не надо считать разработчика класса тупее себя. Тем более, что для java изменение приватных полей и методов вообще никак не влияет на (обратную) совместимость. На семантику - может влиять, но это тема уже совсем другого разговора. И вообще, как уже справедливо отметили - пакеты и отсутствие квалификатора доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 23:49 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected? После того, как вы залезете грязными руками во внутренние переменные класса, совершенно не факт, что не появится каких-либо побочных эффектов. Менее очевидный, но не менее неприятный вопрос - сложности перехода на следующую версию библиотеки. Если внешний интерфейс в приличном обществе обычно вроде как расширяют, обеспечивая обратную совместимость, то про внутренности классов такой гарантии никто не дает, и ваша private переменая может там превратиться во что угодно. Соответственно, если реализация не будет сокрыта, то изменить что-то в библиотеке, по принципу "подложил новую версию вместо старой и все работает" будет просто невозможно, потому как никогда не будет ясно, на что завязано внешнее приложение. По сути ваши завязки на внутренности классов и есть их форк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 00:01 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
В данном топике если опустить красивые слова и обороты мы обсуждаем лень ТС-а и нежелание писать слово private а также непонимание того к чему приводит выставление голого зада в форточку. Всё пошёл спать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 00:38 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected? Нет. Любой public увеличивает "связность". Соответственно сложность использования такого класса (со всеми public атрибутами и методами) растет экспоненциально (комбинаторный взрыв). Вообще любой класс должен стремиться к тому что у него будет один метод "сделать_хорошо". :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 07:05 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororИли заметить private на сущность internal - можешь пользоваться, но будь внимателен. Как по мне private разрушает одну из концепций ООП - наследование. Отказ от управления областью видимости, оставив только public (а protected - как вам уже говорили всего лишь небольшая модификация public) есть полный отказ от первого принципа ООП - инкапсуляции. Сокрытие реализации даёт огромное преимущество - возможность заменить реализацию в любой момент и гарантировать, что код, использующий предоставлемый этим чёрным ящиком открытый интерфейс, не сломается. Кроме того, это же гарантирует, что "пользователь" не сможет _случайно_ сломать реализацию, ковыряясь в "кишках" этого чёрного ящика. Но это вам тоже говорили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 08:28 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
на кодревью в стаковерфлоу целая дискуссия была по поводу private. И это тонкий момент. Многие считают что Private используется в 2х вариантах для инкапсуляции и скрытия информации и это две разные вещи, которые к тому же можно смешивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:47 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected? У каждого класса есть контракт- для всех (public), для наследников (protected) и для избранных (package). Всё остальное- private. Но это не отменяет кривости уровни видимости java, наследованной от C++ (где приходится поддерживать бинарную совместимость с Си). В смысле стройности языка тут вне конкуренции eiffel, где: 1. Переменная, как бы не объявлял её, на запись всегда "private". 2. Указывается класс(ы), которым доступно свойство (переменная/метод)- если это базовый (ANY, аналог Object)- то это как бы public, если это сам класс- аналог protected, если ничего (NONE) - то private, а если конкретный набор классов- то они (и их потомки) увидят. А уровень видимости "пакет" это дыра- для своих классов-то её закрыли, а остальные- пусть мучаются :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:49 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Локшин Марк, авторПо сути ваши завязки на внутренности классов и есть их форк. Согласен, тогда может зайти с другой стороны, пусть будет private, но ввести дополнительно к extends - fork? авторpublic class Foo fork Bar { // получаю полный доступ к Bar } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 11:00 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororЛокшин Марк, авторПо сути ваши завязки на внутренности классов и есть их форк. Согласен, тогда может зайти с другой стороны, пусть будет private, но ввести дополнительно к extends - fork? авторpublic class Foo fork Bar { // получаю полный доступ к Bar } Похоже вы решаете не ту проблему. Для "fork" давно есть решение - делать ч/з interface. Если интерфейса нет, то можно "скрыть за фасадом". Можно, если вам надо, вообще попробовать ч/з AOP :-) Путей уже много. Вы хотите добавить еще один "если нельзя, но очень хочется" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 12:00 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
На самом деле это вопрос правильного UseCase вашего софта. Если вы хотите не иметь гангрену в заднем проходе - то используйте private. И ваш клиент будет максимально правильно использовать ваше ПО. А господин Foror будет иметь огромный почтовый ящик с ненужными вопросами на тему "зачем нужен этот филд" и как его использовать, но видно он мозохист и ему нравится отвечать на глупые вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 12:10 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, вроде ту проблему решаю, мне нужен полнейший доступ к внутренностям стороннего класса - делать fork в файловой системе - гиморно, т.к. из-за одного класса делать форк целой либы, или JDK... Наследовать интерфейсы не решает проблемы на практике, в теории оно конечно всё красиво - этакий сферический конь в вакууме, на практике совсем всё по другому. Юзать AOP опять же не то, я также могу юзать и рефлекшн. Для такого случая как раз не хватает конструкции в ЯП типа fork, который бы полностью дал доступ к кишкам всего класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 15:40 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, пожалуйста не засоряйте тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 15:41 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Forormad_nazgul, вроде ту проблему решаю, мне нужен полнейший доступ к внутренностям стороннего класса - делать fork в файловой системе - гиморно, т.к. из-за одного класса делать форк целой либы, или JDK... Наследовать интерфейсы не решает проблемы на практике, в теории оно конечно всё красиво - этакий сферический конь в вакууме, на практике совсем всё по другому. Юзать AOP опять же не то, я также могу юзать и рефлекшн. Для такого случая как раз не хватает конструкции в ЯП типа fork, который бы полностью дал доступ к кишкам всего класса. Если вам нужен "полнейший доступ к внутренностям стороннего класса", то вам нужен просто сам сторонний класс, т.е. его исходники. Если вы используете сторонние классы, без исходников, то вам не нужен "полнейший доступ к внутренностям стороннего класса". Для вас есть "интерфейс" в виде публичных методов, с которыми вы можете работать. Вот с ними и работайте. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 15:51 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Forormayton, пожалуйста не засоряйте тему Конешно дружище. Как скажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 15:54 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Forormad_nazgul, вроде ту проблему решаю, мне нужен полнейший доступ к внутренностям стороннего класса Если нужен доступ к private полям/методам, то либо автор ошибся, либо ты. Скажи спасибо, что хоть reflection есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 16:09 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, тема дебильная. В своих классах, каждый сам себе хозяин, хочешь - используй, хочешь - не используй. Проблемы нет В чужих либах, если либа хорошо спроектирована и расширяем - то проблемы вряд ли будут; если ее делали идиоты - то хоть private, хоть public... где наложить коровьих лепешек для будущих разработчиков... все равно найдут. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 16:12 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
В Питоне сделали все поля публичными. Потом стали придумывать соглашения: Python v2.7.8 documentation“Private” instance variables that cannot be accessed except from inside an object don’t exist in Python. However, there is a convention that is followed by most Python code: a name prefixed with an underscore (e.g. _spam) should be treated as a non-public part of the API (whether it is a function, a method or a data member). It should be considered an implementation detail and subject to change without notice. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 16:15 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
В сях тоже существовали соглашения где функции начинающиеся с "underscore" считались скрытыми, ядерными, или просто unsafe с точки зрения полезного эффекта. Тоесть "лучше не трогать" руками если досконально не разобрался. Но думаю что красоты в коде от этого не добавилось. Особенно плюсы, которые бьют рекорды по степени загаженности кода различными соглашениями наподобие Венгерских e.t.c. нотаций, макросов, проприетарных соглашений, библиотечных префиксов и многое другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 16:23 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Alexander A. Sak, а где я говорил только о публичных полях? Я лишь, говорил, что private слишком огораживает разработчика, который хочет залезть во внутренности чужого класса. И сначала подумал о замене protected и private на internal, но потом пришел к выводу, что "дешевле" расширить extends до fork, который позволит расширить чужой класс и дать полный доступ к его кишочкам для работы на свой страх и риск. По крайне-мере это проще, чем делать форк, юзать рефлекш, аоп и прочие костыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 16:51 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororAlexander A. Sak, а где я говорил только о публичных полях? Я лишь, говорил, что private слишком огораживает разработчика, который хочет залезть во внутренности чужого класса. И сначала подумал о замене protected и private на internal, но потом пришел к выводу, что "дешевле" расширить extends до fork, который позволит расширить чужой класс и дать полный доступ к его кишочкам для работы на свой страх и риск. По крайне-мере это проще, чем делать форк, юзать рефлекш, аоп и прочие костыли. Идеология java предполагает, что говнокод писать сложнее, чем на других языках, и это должно сразу бросаться в глаза. Так что всё правильно- если тебе надо иметь доступ к private полям, то рефлекшн хорошо показывает, что кто-то из вас (тебя и автора библиотеки) идиот. PS: ничего личного :) PPS: когда-то давно сам менял значение protected-поля в чужом классе, делая фиктивного наследника и приводя объект (он прилетал снаружи) к моему типу. В delphi так можно :) Тогда считал авторов VCL в данном месте... скажем так... неумными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 17:02 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororAlexander A. Sak, а где я говорил только о публичных полях? Я лишь, говорил, что private слишком огораживает разработчика, который хочет залезть во внутренности чужого класса. Но необходимость возможности огородить все-таки не отрицается? Получается, вопрос стоит в том, насколько можно разработчику огораживать другого разработчика. И есть предложение огородить разработчика от слишком сильного огораживания. Простите за тавтологию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 17:18 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Пользователь, вооруженный шаблоном Fork сможет унаследовать java.lang.String. Что из этого выйдет - я не знаю но очевидно старый пьяница Гослинг имел какие-то основания когда запрещал в явном виде наследование финального иммутабельного самого распространённого и квази-атомарного типа строк в Javа. Очевидно что здесь краеугольным камнем стоит идеология языка и важность и значимость использования именно ОДНОЙ имплементации строк. Возможно так было сделать проще чем бить по рукам нубасов и в тысячный раз в нотах и гайдах и прочих прокламациях от Sun(Oracle) отписывать что вы закрашили multithrd. app именно своей мутабельной имплементацией строк вместо того чтобы взять стандартную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 17:20 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Fororprivate слишком огораживает разработчика, который хочет залезть во внутренности чужого класса и иметь полный доступ к его кишочкам для работы на свой страх и риск.Плохому танцору тапочки жмут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 18:03 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Проблема не только в String, вся модель безопасности идет лесом :) Хотя, если одному ленивому программисту это мешает... oracle должен обратить внимание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 20:12 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Пускай на Groovy переходит. Там всё либерально. Объявил сущность с филдами. Всё доступно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:09 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Там же вроде тоже есть возможность сделать поле (свойство) private. Получается, не подходит. Только Питон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:15 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, авторвооруженный шаблоном Fork сможет унаследовать java.lang.String Можно наблюдать опыт JavaScript, там много чего делали со String, но в итоге сошлись на том, что расширять фундаментальные типы, даже банальным добавлением метода - плохой тон. И как-то живут себе, пишут код ) Понятно, что java это довольно консервативная платформа, но тем не менее у неё есть JVM, на которой можно запилить свой ЯП с блэк джеком и дамами легкого поведения ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:19 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
забыл ник, авторвся модель безопасности идет лесом Тогда и рефлекшн нужно запретить, там ведь тоже можно сделать setAccessible(true). Но если модель безопасности можно настроить на запрет рефлекшн, то и fork можно запретить, если кому-то это нужно, так что ваш аргумент мимо кассы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:34 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Alexander A. Sak, авторТолько Питон. И причем тут питон? Я же на форуме java... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:36 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
забыл ник, авторесли одному ленивому программисту это мешает Лень - двигатель прогресса, еще один мимо кассы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:37 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, авторПлохому танцору тапочки жмут Причем тут тапочки и плохой танцор? Отследите логику - мне нужно расширить некоторую функциональность класса, которую разработчик не предусмотрел или не смог допилить. Но при этом, мне не хочется делать форк или поддерживать его библиотеку. Потому что это сложнее, чем сделать наследование вот прям тут в IDE и получить полный доступ к пакетам классов, как своим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:43 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Наследование - не единственный вариант использование ООП. Более того, это не самый лучший вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 22:46 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
maytonГде и когда в стандартных java-библиотеках, открытых библиотеках типа apache commons .... e.t.c. и прочего опенсорца вам вдруг (!) внезапно понадобилось значение приватной переменной базового класса?myfaces :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 13:41 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororFor All, авторПлохому танцору тапочки жмут Причем тут тапочки и плохой танцор? Отследите логику - мне нужно расширить некоторую функциональность класса, которую разработчик не предусмотрел или не смог допилить. Но при этом, мне не хочется делать форк или поддерживать его библиотеку. Потому что это сложнее, чем сделать наследование вот прям тут в IDE и получить полный доступ к пакетам классов, как своим. Расширяйте, кто вам мешает?! Зачем вам нужны приватные члены класса, для которого нет исходника? Считайте, что вы о них вообще ничего не знаете. Скорее всего решение не там где вы ищите. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 14:11 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororПонятно, что java это довольно консервативная платформа, но тем не менее у неё есть JVM, на которой можно запилить свой ЯП с блэк джеком и дамами легкого поведения ) Может тебе просто перейти на Груви? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 15:16 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mayton, нет, мне проще будет реализовать fork фичу в виде плагина для eclipse, правда я пока не знаю, где там копаться, чтобы расширить валидатор для таких конструкций: Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:29 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, авторЗачем вам нужны приватные члены класса, для которого нет исходника? Еще не сталкивался, чтобы не было исходников, но там где их нет, можно по байт-коду восстановить методы и классы и также форкнуть прямо в коде и сделать свою обертку, в случае необходимости. Но, вообще, я уже устал повторять, одно и тоже читайте внимательнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:36 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, авторРасширяйте, кто вам мешает?! Не кто, а что мне мешает. А мешают мне приватные методы и поля, из-за которых приходится использовать Reflection. Как один из недавних примеров, невозможности предусмотреть всё - в Nashorn нельзя было получить доступ к ScriptObject, т.к. он был обернут в ScriptObjectMirror в приватном поле. И тут вы конечно с умничаете и скажете нефиг лезть внутрь. Но мне было удобнее работать со ScriptObject напрямую и я запилил Reflection обертку. А недавно, спустя несколько месяцев, я увидел новый класс ScriptUtils (если не ошибся с названием), где появились методы wrap и unwrap, чтобы работать со ScriptObject напрямую. И заметьте мне такой метод был нужен несколько месяцев назад и очевидно не мне одному тоже. Так что, как видите очень простой пример, когда разработчик не смог предусмотреть, то что будет нужно пользователю. При этом, если придерживаться вашей логики, то я должен ждать несколько месяцев, пока нужный доступ откроют официально. Либо пользоваться рефлекшн. Но рефлекшн в более сложных случаях - громоздок. Поэтому нужно альтернативное решение, например такое как fork внутри кода, с использованием фич из АОП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 19:52 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Заметьте - сделали обёртки, а не превратили приватные поля в публичные. Так что вы всё равно не правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 03:06 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, так и я сделал обертку, только использовал для этого reflection ) Это я просто привел как пример, того, что разработчики не знают, что нужно открыть для пользователя. Вообще, спор из интересного обменами мыслями, перешел в какое-то перепирание и не умение вчитываться, в то что я предлагаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 04:57 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Но оно и понятно, почему так, центр внимание смещен на заглавие этого топика, когда мысль ушла совсем в другую плоскость. Нужно просто создавать другой топик обсуждающий концепцию fork. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 05:01 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororЭто я просто привел как пример, того, что разработчики не знают, что нужно открыть для пользователяпользователюИсправлено мною.Вообще, спор из интересного обменами мыслями, перешел в какое-то перепирание и не умение вчитываться, в то что я предлагаю.Вы предлагаете лечить перхоть гильотиной. Это, безусловно, надёжно, но создаёт массу весьма неприятных побочных эффектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 05:41 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororТак что, как видите очень простой пример, когда разработчик не смог предусмотреть, то что будет нужно пользователю. При этом, если придерживаться вашей логики, то я должен ждать несколько месяцев, пока нужный доступ откроют официально. Либо пользоваться рефлекшн. Но рефлекшн в более сложных случаях - громоздок. Поэтому нужно альтернативное решение, например такое как fork внутри кода, с использованием фич из АОП. Зачем рефлекшен?! Вы можете просто сделать форк (реальный) И реализовать собственный класс. При условии, что исходники имеются. Можно, конечно, если "очень надо" сделать костыль ч/з рефлекшен. Но это костыль. И относиться к нему надо как к кастылю. Правильнее было бы 1) Связаться с разработчиками и предложить свое решение (патч) 2) Взять исходники (если они в свободном доступе) и сделать форк Если же нужна "полная свобода", то используйте C/C++, например. Там можно делать все и немного еще. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 07:49 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororА недавно, спустя несколько месяцев, я увидел новый класс ScriptUtils (если не ошибся с названием), где появились методы wrap и unwrap, чтобы работать со ScriptObject напрямую. И заметьте мне такой метод был нужен несколько месяцев назад и очевидно не мне одному тоже. Все ошибаются. И не сделать метод доступа к private-полю там, где он надо- это ошибка проектирования класса. Бывает. Бывает и хуже. Много хуже. Но предлагать отменить private из-за того, что не все умеют им пользоваться- это перебор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 09:57 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Fororмне проще будет реализовать fork фичу в виде плагина для eclipse, правда я пока не знаю, где там копаться, чтобы расширить валидатор для таких конструкций: Код: java 1. 2. 3. 4. 5. Ну допустим валидатор в еклипсе вы расширите, а как насчёт компилятора? Он-то (компилятор) не научен frok распознавать. Компилятор кастомный возьмёте - валидатор байт кода такой класс не пропустит и JVM откажется его загружать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 11:50 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, данная конструкция затем будет преобразована в нормальный java синтаксис, автоматически. На вскидку, смержить код и скомпилировать, положив в тот же пакет. А можно даже заместить форкнутый класс, новым, так даже интереснее ) В общем, это тот же форк в файловой системе, только все делается гораздо проще, автоматически, через IDE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 19:33 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Т.е. заместо того, чтобы создавать новый бранч в гите, просто объявляешь в коде, своего проекта, форк нужного класса. Пишешь тут же реализацию, а дальше все делается автоматом, когда проект билдится или ранится. Форкнутый класс подменяется вашим классом, для этого можно юзать тот же AOP. И не нужно парится с бранчами, всё просто, удобно и прозрачно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 19:38 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Вам уже говорили о побочных эффектах? Изменение класса требует, как минимум, пересборки. Как максимум - запуск всех тестов. И это ещё хорошо, что ява позволяет обойтись без перекомпиляции. Хотя и не всегда. P.S. Я, конечно, понимаю желание сократить собственные проблемы за счёт увеличения чужих, но должно же быть хоть какое-то чувство меры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 20:36 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, нужно понимать, что данный метод не для глобального изменения стороннего проекта, иначе, действительно, проще сделать отдельный бранч. Данный метод скорее для расширения класса, без удаления методов или полей. Поэтому пересобирать сторонний проект нет смысла. Достаточно подменить класс в jar'e. А вот запуск тестов, интересная идея, но тут не всегда получится их просто запустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 08:40 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Мопжежвашуять ... Сегодня одному разработчику пришла гениальная мысль доработать класс сторонней библиотеки и он его форкнул, завтра - другому и он тоже сделал свой форк, а послезавтра - третьему, совершенно неповинному человеку, понадобилось развернуть оба приложения в одном контейнере. И тут выяснилось, что форки "немножечко несовместимы". И что этому третьему страдальцу делать? Слёзно умолять двух независимых разработчиков сделать общий форк? Может проще послать лесом их обоих? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 09:51 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
И вообще: то, что вы упорно изобретаете, существует с незапамятных времён и называется патч. Существует и более-менее стандартизированный способ "изготавливать" такие исправления. Как пример:Tomcat changelogAllow the JNDI Realm to start even if the directory is not available. The directory not being available is not fatal once the Realm is started and it need not be fatal when the Realm starts. Based on a patch by Cédric Couralet . (markt)Выделено мною. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 10:09 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Весь срач не читал, так что отвечу только ОП. С первого взгляда да, как и написал ОП, вынесение потрохов класса в public дает больше свободы клиентам и меньше головной боли на тему "как заставить эту либу работать так, как нужно нам". НО: - самая главная проблема - обратная совместимость. Код, который может использоваться клиентом, уже нельзя поменять без риска сломать компиляцию у зависимых проектов или, еще хуже, внести в них баги. Именно поэтому API так тщательно проектируется, а вся реализация засовывается в private/default область видимости. Злобных буратино с рефлекшном можно игнорировать - сами виноваты. - вторая проблема - понимабельность. Как правило, именно области видимости формируют у библиотеки API, т.е. что же надо у нее вызывать. Если сделать все public, потенциальный юзер библиотеки не сможет без вдумчивого изучения документации понять, как же ее дергать и какие классы надо использовать. - третья проблема - декомпозиция. Главное, о чем должен помнить программист - это об ограниченности своего мозга, неспособного одновременно обрабатывать много понятий. Именно поэтому придумана инкапсуляция и блочная структура программ. Чтобы, обдумывая проблему, не нужно было загружать себе в голову детали реализации отдельных модулей. Что же делать? Проектирование API - это сложная задача, требующая большого опыта. В качестве библиотеки, где реализация тщательно скрыта от клиента, могу рекомендовать Guava. Образец расширяемой библиотеки для меня - старые модули spring framework, spring-beans например. Изучай, как пишут умные люди и будет тебе счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 10:44 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororFor All, данная конструкция затем будет преобразована в нормальный java синтаксис, автоматически.Хотелось бы деталей. Как вот эта конструкция: Код: java 1. 2. 3. 4. 5. будет выглядеть после преобразования с нормальный java синтаксис? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 12:12 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
scf, авторВесь срач не читал, так что отвечу только ОП А стоило, ваши ответы лишь повысили энтропию этого топика, не дав ничего интересного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 13:06 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, автор Слёзно умолять двух независимых разработчиков сделать общий форк? Зачем умолять? Если уж возникла такая ситуация, то всегда есть возможность сделать свой форк на базе предыдущих. В любом случае, это ничем не отличается от Dependency Hell, когда сторонние библиотеки тянут разные версии одной и той же либы в зависимостях. У меня только недавно возникла такая ситуация, когда одна либа тянет старую, борадатую lucene 3.0, а другая 5.0. Различия на порядки и пойди разбери, что делать. Только самому вникать в код и переводить либу на последнюю lucene. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 13:18 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, Будет создан класс java.nio.file.StandardWatchEventKinds, который заместит изначальный java.nio.file.StandardWatchEventKinds сделав обычный merge текстовых файлов (исходников обоих классов), как это делается в любых vcs. Вообще, тут нужно продумать различные варианты, я лишь пока кидаюсь идеями, а как появится время, создам отдельный топик и распишу подробнее про fork. Вот только думаю его нужно не fork назвать, а как-то по другому, т.к. это лишь расширенный extends. Т.е. класс лишь расширяется как при наследовании, но с полным доступом ко всем полям и методам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 13:23 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Конечно, опасно делать сложные форки, с изменением тела методов, например, известных библиотек или JDK. Но с другой стороны не обязательно замещать оригинальный класс, может просто класть форк отдельно, с другим названием, в тот же пакет. Тогда будет гораздо безопаснее, но менее гибче. В общем, идея сложная, я для этого и вынес на обсуждение ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 13:31 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororБудет создан класс java.nio.file.StandardWatchEventKinds, который заместит изначальный java.nio.file.StandardWatchEventKinds сделав обычный merge текстовых файлов (исходников обоих классов), как это делается в любых vcs.А если нет исходников? И дизассемблирование не всегда поможет, т.к. имена приватных мемберов могут оказаться сгенерёнными дизассемблером, а не те, которые аффтар либы давал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 13:36 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororЗачем умолять? Если уж возникла такая ситуация, то всегда есть возможность сделать свой форк на базе предыдущих.Этот третий - ни разу не программист. Это сисадмин, который в деталях знает какие параметры и почему должны быть прописаны и в комстроке и в настройках. Имеет право даже синтаксиса java не знать. Но дело даже не в этом. В этой жизни и так достаточно геморроя с разными версиями одних и тех же библиотек - зачем ещё больше его увеличивать? В условиях, напомню, когда существует стандартный механизм: допилил, diff и - patch разработчикам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 15:51 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected? Как ни странно, неофит не так уж и неправ -- есть много языков программирования с ООП, которые не поддерживают т.н. инкапсуляцию на уровне языка -- это делается на уговне соглашений о стиле программирования. В Java private не так уж и строг -- через reflection приватные поля доступны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 15:59 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Fororне обязательно замещать оригинальный класс, может просто класть форк отдельно, с другим названием, в тот же пакетИ как рантайм должен компоновать куски? Ваш и "того парня"? Как быть с Sealed: true в манифестах для библиотек "только чтение"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 16:04 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
MasterZivВ Java private не так уж и строг -- через reflection приватные поля доступны... пока не установлен диспетчер безопасности. Редкость - да, но всё-таки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 16:05 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
У ТС вообще странный вброс. "почему разработчику знают, что нужно пользователю". И что, сидеть ровно и ничего не делать? Формальный ответ - из ТЗ. А не формально... С чего он вообще взял, что через задание области видимости разработчик определяет, что нужно _пользователю_???!. Прежде всего, разработчик определяет то, что нужно _самому_разработчику. Так он указывает, какие части хочет скрыть или, наоборот, показать. Если кто-то наплевал и залез в private, то проблемы индейцев ... - понятно; ни кто не гарантирует ему отсутствие "интересного поведения", когда скрытая реализация изменится (а что, разве кто-то обещал её не менять?). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2014, 23:53 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, автор... пока не установлен диспетчер безопасности. Редкость - да, но всё-таки. А разве нельзя его точечно настраивать, скажем для таких-то классов можно рефлекшн, для всех остальных нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 10:49 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror, я бы вообще при дизайне избегал бы наследования и иерархий. Любая иерархическая структура содержит в себе подвохи. И хотя мы видим их повсеместно, программы наши могут быть не такими сложными, какими они бывают при использовании иерархических структур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 17:26 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
way2bariton, у меня недавно начало складываться впечатление, что этап дизайна может растянуться на долгое время в связи с корректировками. А иерархическая структура будет являться лишь подведением итогов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2014, 23:45 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
way2baritonForor, я бы вообще при дизайне избегал бы наследования и иерархий. дизайн чего? Слишком широкий термин. Упростить Модель предметки - обязанность программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 11:28 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororBasil A. Sidorov, автор... пока не установлен диспетчер безопасности. Редкость - да, но всё-таки. А разве нельзя его точечно настраивать, скажем для таких-то классов можно рефлекшн, для всех остальных нельзя? ну вот, пример: есть класс - полилиния от оракле JGeometry http://docs.oracle.com/cd/B19306_01/appdev.102/b14373/oracle/spatial/geometry/JGeometry.html - у него массив точек можно достать через getOrdinatesArray() Код: java 1. 2. 3. 4. 5. - мне нужно добавить точку к линии. Хакать этот класс или нет? )))) - если да, то предупредить ли работодателя? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 17:53 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Ну так создай новый массив ординат (для новой полилинии) и создай ее заново. В чем проблема? IMHO 1. С полилинией подводных камней не вижу, но например для зоны, попытка добавления точки явно может привести с созданию некоректных зон (типа бабочки). 2. Как я понимаю, полилиния может быть не только полилинией, но и MULTIPOLYLINE. Тогда, тоже, добавление точки не такое уж и простое становится. 3. Ну и вообще, это больше объекты для хранения информации, а не для манипулирования и расчетов. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2014, 23:40 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, вот я получил объект из БД Код: java 1. 2. 3. 4. 5. в том и вопрос. Для модификации внутреннего поля рекомендуется создать новый объект с конструктором и совсем новым массивом точек. Код: java 1. Так? ЗЫ. Я и говорю, что такие большие классы защищают от ....(сабж). Могут быть некорректности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 00:07 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, Некорректности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 00:27 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
smackmychi, ну да. Метода setXXX нету. Пробовать записать в память ещё 2-30 double? Есть контракт на класс. Там всё написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 00:40 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, Интересно, а со строками такое кого-нибудь припаривает? И чем может быть обусловлена невозможность обновления состояния объекта в данном случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 10:41 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
smackmychiИнтересно, а со строками такое кого-нибудь припаривает? Кого-нибудь- да :D smackmychiИ чем может быть обусловлена невозможность обновления состояния объекта в данном случае? Изначально- безопасность. Но нашёлся ещё один профит- финал-объекты сильно ускоряют многопотчный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 11:14 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
smackmychi, представим объект квадрат. Если к нему добавить точку недокументированным способом - он перестанет быть данным типом. "Если бы у бабушки были яйца..." .. Обусловлена ТЗ в котором не нужен полиморфизм или морфинг квадрата. Зачем делать класс дороже? Строка тоже имеет ограничения. В винде, если записать в память после символа окончания - испортим соседние объекты и получим "страшную ошибку для дельфистов". В Java всё делают для безопасного кода)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 11:17 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, То есть с "бабушкиными" классами все ок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 11:27 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
smackmychiPetro123, То есть с "бабушкиными" классами все ок? для дедушки - да)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 11:38 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, Тогда пойду позвоню скорее, чтобы final и private не трогали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 13:28 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123 Упростить Модель предметки - обязанность программиста.Бизнес аналитика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 11:49 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, Угу. Он в тексте ворда, а ты в классах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 12:24 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123Угу. Он в тексте ворда, а ты в классах.Упрощать ещё больше то, что он наупрощал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 12:48 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
For All, Бизнес аналитик понятия не имеет о программиоовании. И это хорошо. Так что, делать private или нет, решает либо программист. Либо много людей у кодировщика - системный архитектор, системный аналитик, тим лидер и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 13:18 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123, в идеальной вселенной может кто-то и думает "делать private или нет", в реальном мире поджимают сроки и делают по принципу, что не public, то private . Ни кто не думает о том, как будут расширять его класс другие разработчики. А если думают, то в очень специфичных случаях, например, в ситуациях, когда класс явно создается для того, чтобы его расширяли через наследование в клиентском коде. Причина тому, банальна, поджимают сроки, дедлайны горят, еще тесты писать... Кому надо сделают собственный бранч, а мы может и примет данные изменения, а может и нет. Я лишь хочу найти золотую середину, между созданием бранча всего проекта и использованием reflection. Но вижу, ни кто не поддерживают такую идею, у меня же нет времени пока ей заниматься ибо пилю другой проект. Но может в будущем обдумаю это более детально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 15:03 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Fororв идеальной вселенной может кто-то и думает "делать private или нет", в реальном мире поджимают сроки и делают по принципу, что не public, то private . Ни кто не думает о том, как будут расширять его класс другие разработчики. А если думают, то в очень специфичных случаях, например, в ситуациях, когда класс явно создается для того, чтобы его расширяли через наследование в клиентском коде. Это неправда, если говорить о проектировании библиотек, которые ориентируются на большое количество пользователей, каждое поле проектируется и рассматривается с прицелом на расширение, иначе срок жизни таких библиотек будет чуть больше чем 0. Конечно косяки случаются, но это скорее исключение и зависит прежде всего от квалификации программистов. Такое ощущение что вы никогда не разрабатывали библиотек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 15:22 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Foror, кто как пишет, это свойство характера. (у некоторых нет времени и мусор выносить).... Я лично всегда закрываю по максимуму (если это не тяжело в IDE). Когда компилятор ругается - открываю )))) На 10 наследников не вижу, но на один уровень выше - думаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 15:27 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Petro123... в том и вопрос. Для модификации внутреннего поля рекомендуется создать новый объект с конструктором и совсем новым массивом точек. ... Так? Если рекомендуется в доке/ноте Oracle и проблем нет, то делать по доке. Если проблемы есть, то без изменения кол-во объектов (размерности) ordinates, можно просто попытаться в ordinates[ нужное_вписать ] присвоить новый массив точек. Если верить декомпилятору, должно прокатит. Но лучше на такое поведение не закладываться. А то сейчас хочется "точку добавить" (что можно), завтра захочется тип фигуры сменить (с линии на зону или обратно - imho вполне законное желание юзера) и наступит облом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 15:30 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, +1 да, проблем нет - всё сделал. Хибер, насколько знаю, не особо дружит с ГИС - полями. Но, я понимаю, слишком специфическая область. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 16:23 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
забыл ник, авторникогда не разрабатывали библиотек Сейчас разрабатываю и если я еще буду думать, о том, как мои классы будут расширять внешние программеры, то мои либы не увидят продакшен. Тут банально не хватает времени просто продумать взаимосвязи между классами, а еще тесты нужно писать. авториначе срок жизни таких библиотек будет чуть больше чем 0 С чего это? Библиотеки разрабатываются, чтобы их просто подключить и юзать через интерфейсы - это 95% их use case. Зачем библиотеке думать о том, как её будут расширять другие программеры? Если вы подразумеваете фреймворк, то да, это важная вещь, но с другой стороны тут также думают лишь о клиентских классах. А вот заботу о расширении internal классов, я видел лишь в tapestry 5, да и то, там хватает своих гемороев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 16:57 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
Ну если FororСейчас разрабатываю и если я еще буду думать, о том, как мои классы будут расширять внешние программеры, Тут банально не хватает времени просто продумать взаимосвязи между классами То может Foror то мои либы не увидят продакшен. и к лучшему? FororС чего это? Библиотеки разрабатываются, чтобы их просто подключить и юзать через интерфейсы - это 95% их use case. Зачем библиотеке думать о том, как её будут расширять другие программеры? Если вы подразумеваете фреймворк, то да, это важная вещь, но с другой стороны тут также думают лишь о клиентских классах. А вот заботу о расширении internal классов, я видел лишь в tapestry 5, да и то, там хватает своих гемороев. HttpClient для вас это библиотека или фреймворк? Правильно, большая часть кода не должна волновать клиента. В местах где скорее всего понадобится кастомизация и вводят интерфейсы в качестве точек расширения, как ни странно после тщательного обдумывания взаимосвязи между классами. Если вы используете библиотеку\фреймворк и вам нужно лезть внутрь имплементации - это или говно-библиотека, или очень редкий случай, или вы используете библиотеку не для того, для чего она изначально задумывалась. Из этих 3 вариантов, валидный только "очень редкий случай", вводить для этого новую языковую конструкцию - юред, рефлекшн вполне годен для этого. Остальные два случая - это ошибка проектировщика, либо на стороне библиотеки, либо на стороне клиента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 17:22 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororСейчас разрабатываю и если я еще буду думать, о том, как мои классы будут расширять внешние программеры, то мои либы не увидят продакшенВаши библиотеки должны проектироваться так, чтобы у их пользователей не возникало желания "расширять(ся)". P.S. Наследование не единственный и, часто, не лучший вариант использования ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 18:03 |
|
||
|
Видимость private, почему разработчику знают, что нужно пользователю?
|
|||
|---|---|---|---|
|
#18+
FororPetro123, в идеальной вселенной может кто-то и думает "делать private или нет", в реальном мире поджимают сроки и делают по принципу, что не public, то private . Ни кто не думает о том, как будут расширять его класс другие разработчики. А если думают, то в очень специфичных случаях, например, в ситуациях, когда класс явно создается для того, чтобы его расширяли через наследование в клиентском коде. На самом деле вытаскивая любые потроха наружу (даже в protected) нужно понимать, во-первых, как это будет использоваться, а, во-вторых, принимать на себя обязательства не изменять это. Если же автор не готов к этому- да, лучше private. Вообще разработка общедоступных библиотек- это очень сложная вещь. Давно известно правило- "пока у тебя нет трёх применений библиотеки- ты её хорошо не сделаешь". Сделать без этого могут единицы людей. Причём "использовать" и "расширять"- это очень разные вещи, которые надо проектировать отдельно. Так что вполне может оказаться, что интерфейс библиотеки был взят с потолка. Многие из шаблонов проектирования сделаны для того, чтобы помочь делать хорошо сразу. Правда в итоге всё одно пришли к "simple code"- делать просто, а когда найдутся применения- допилить. Но это возвращает обратно к "трём примерам использования". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 10:08 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2126630]: |
0ms |
get settings: |
4ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
148ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 461ms |

| 0 / 0 |
