powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Видимость private, почему разработчику знают, что нужно пользователю?
124 сообщений из 124, показаны все 5 страниц
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732038
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732047
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или заметить private на сущность internal - можешь пользоваться, но будь внимателен. Как по мне private разрушает одну из концепций ООП - наследование. А если учесть о качестве дизайна классов в большинстве проектов, то зачастую очень сложно добавить новое поведение существующим классом. Из-за чего используем костыли - рефлекшн.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732057
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foror,
а где же код? )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732074
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foror, была бы здесь Барбара Лисков - старушка-б не выдержала и запустила-бы в тебя своей вставной
челюстью а потом побила костылём.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732091
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, ха, запросто пакет WatchService чуть больше, чем полностью. Например, он при регистрации новой папки, может не поймать файлы, которые создавались во время регистрации. Я это исправил, но мне пришлось кучу рефлекшн кода задействовать.

Нет, пожалуйста, если ты какой-нибудь Брайн Страуструп, юзай private, да и то, сомневаюсь, что осилишь все возможные варианты развития событий. А большинство, то, прогрммеров лепят этот private, по умолчанию, по крайне-мере eclipse его всегда лепит.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732094
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще иногда делаю transient поля. Вот такой вот я злодей.

А нефих...
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732095
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foror,
ты свой класс покажи)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732096
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, transient это понятно, к этому претензий нет )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732097
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
правильно) Ты же родитель своего отпрыска-класса)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732098
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё должно быть private и final (в редких случаях final можно опустить)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732100
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, а чего его показывать? ) У меня, что не public - protected, private не использую, но конечно хотелось бы что-то типа internal, замещающий protected и private одновременно. Хоть свой ЯП мути на базе Java, я бы еще с getter/setter разобрался ) А то понавыпускали всяких Kotlin, Ceylon - один выпендреж )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732101
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All, а как мне потом ваши классы расширять?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732102
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All, планетка то маленькая, а интернет еще меньше, вот натолкнусь на ваши классы и буду матюгаться )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732104
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foror,
ну, а если надо только через Getter Setter иначе всё сломаеццо)?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732105
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororFor All, планетка то маленькая, а интернет еще меньше, вот натолкнусь на ваши классы и буду матюгаться )Наврядли - не будете
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732106
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororFor All, а как мне потом ваши классы расширять?Словом extend
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732107
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, чему там ломаться? Я же ваш код перед этим изучу, а потом полученную конструкцию еще отдебажу и тесты прогоню.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732109
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foror. Первое. На самом деле можно ничего не писать. Будет package-видимость. Это аналог private но чуть
шире. Пользуйся ради своей собственной лени.

И второе. Если подходить с позиции бизнес-кодеров которые клепают только бизнес-сущности то пофиг.
Но если переменная экземпляра класса является участником АЛГОРИТМА то я как создатель этого алгоритма
ЖЕЛАЮ чтобы она была СКРЫТОЙ частью алгоритма и не светилась как поле вызывая соблазн потрогать себя
грязными руками и уж тем более накрутить на ней логику которую я в производном классе всё равно
переопределю. Вот такой я злодей.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732110
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For AllВсё должно быть private и final (в редких случаях final можно опустить)
и static )))

/это юмор/
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732111
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororPetro123, а чего его показывать? ) У меня, что не public - protected, private не используюВсё что не public обязано быть private.
protected - это тот же public (с некоторыми ограничениями), и его нужно примененять обосновано.
Так что у вас вообще всё public выходит.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732112
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, ну и юзайте getter/setter кто вам не даёт, только вот не надо для обычной структуры генерить в IDE код доступа к полям )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732113
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororPetro123, чему там ломаться? Я же ваш код перед этим изучу, а потом полученную конструкцию еще отдебажу и тесты прогоню.А зачем? Не проще ли к нему (стороннему коду) относиться как к чёрному ящику?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732115
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All, у вас устаревшие знания, всё течет, всё меняется, как по мне достаточно public и internal, причем public указывать явно не надо, просто объявил поле, метод - оно public, объявил internal, предупредил пользователя ваших классов.

Я ведь с этим не только в WatchService сталкиваюсь, с той же Tapestry намучался, когда нужно было запилить свою функциональность на базе существующих классов. Но нет, все что не public - private и иди мучайся через рефлекшн или copy-paste.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732116
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All, не проще, когда достигаешь определенного опыта, начинает хотеться изменить код этого черного ящика, т.к. тебя что-то может не устраивать. Можно конечно идти и делать pull-request но это долго и муторно, да еще могут и не принять, тогда fork, а это еще тот гимор.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732118
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fororнужно было запилить свою функциональность на базе существующих классов.
ну, т.е. ты специалист по нетрадиционному сексу?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732122
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororFor All, у вас устаревшие знания, всё течет, всё меняется, как по мне достаточно public и internal, причем public указывать явно не надо, просто объявил поле, метод - оно public, объявил internal, предупредил пользователя ваших классов.Можно ссылочку на источник новых и свежих знаний? Или, может, internal - это ваше личное изобретение?
Fororкогда достигаешь определенного опыта, начинает хотеться изменить код этого черного ящика, т.к. тебя что-то может не устраивать.Когда достигаешь определенного опыта, чёрный ящик можно написать самому, такой какой нужен, чтобы устраивал
а не пытаться мотоциклом шурупы откручивать.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732123
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте пойдем от обратного. Вспомним из практики. Где и когда в стандартных java-библиотеках,
открытых библиотеках типа apache commons .... e.t.c. и прочего опенсорца вам вдруг (!) внезапно понадобилось
значение приватной переменной базового класса?

Я таких ситуаций не помню.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732126
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All, аха ) всё понятно, миллионы леммингов не могут ошибаться ) internal не моё личное изобретение, просто всё больше сталкиваюсь с проектами, где классы делают не приватными, а кладут в пакеты internal, и это правильное движение, я лишь подумал, что это можно развить на классы, но конечно, это радикальное решение, в java такого не появится уж точно )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732127
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, ой, да запросто, есть такая либа jansi, так я её расширил своим классом xansi, но там вроде не пришлось использовать рефлекшн, но я точно не помню, вроде всё равно были трудности из-за этого private.

А стандартные apache-commons либы, это в основном набор статичных методов и полей, там то, особо менять ничего и не надо.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732128
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж на то пошло, то в стандартных библиотеках такой пример есть - theUnsafe в sun.misc.Unsafe.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732136
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
авторНо если переменная экземпляра класса является участником АЛГОРИТМА то я как создатель этого алгоритма
ЖЕЛАЮ чтобы она была СКРЫТОЙ частью алгоритма и не светилась как поле вызывая соблазн потрогать себя
грязными руками и уж тем более накрутить на ней логику которую я в производном классе всё равно
переопределю. Вот такой я злодей.

Ха, да пожалуйста, тогда зачем вы вообще сырцы открываете? Тут то речь про open-source. Делайте бинарник и вообще забот не будет ) А тот, кто захочет потрогать - всё равно потрогает, в крайнем случае copy-past'ом или дизассемблером )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732141
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forormayton, ой, да запросто, есть такая либа jansi, так я её расширил своим классом xansi, но там вроде не пришлось использовать рефлекшн, но я точно не помню, вроде всё равно были трудности из-за этого private.
Ану ану. Что за трудности в этом Джанси? Расскажи.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732232
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне тоже кажется, что при создании класса невозможно учесть все способы его дальнейшего использования. И + к этому, private снижает гибкость при наследовании. И вообще, вот типа инкапсуляция, но при наследовании все-равно нужно изучать детально внутренности базового(вых) классов, так что по-моему наследование и инкапсуляция противоречат немного). Я за то, чтобы убрать private и protected, а сделать inner как и выше предлагали.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732255
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо считать разработчика класса тупее себя.
Тем более, что для java изменение приватных полей и методов вообще никак не влияет на (обратную) совместимость.
На семантику - может влиять, но это тема уже совсем другого разговора.
И вообще, как уже справедливо отметили - пакеты и отсутствие квалификатора доступа.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732262
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected?
После того, как вы залезете грязными руками во внутренние переменные класса, совершенно не факт, что не появится каких-либо побочных эффектов.
Менее очевидный, но не менее неприятный вопрос - сложности перехода на следующую версию библиотеки. Если внешний интерфейс в приличном обществе обычно вроде как расширяют, обеспечивая обратную совместимость, то про внутренности классов такой гарантии никто не дает, и ваша private переменая может там превратиться во что угодно. Соответственно, если реализация не будет сокрыта, то изменить что-то в библиотеке, по принципу "подложил новую версию вместо старой и все работает" будет просто невозможно, потому как никогда не будет ясно, на что завязано внешнее приложение. По сути ваши завязки на внутренности классов и есть их форк.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732274
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном топике если опустить красивые слова и обороты мы обсуждаем лень ТС-а
и нежелание писать слово private а также непонимание того к чему приводит
выставление голого зада в форточку.

Всё пошёл спать.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732303
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected?

Нет.
Любой public увеличивает "связность".
Соответственно сложность использования такого класса (со всеми public атрибутами и методами) растет экспоненциально (комбинаторный взрыв).

Вообще любой класс должен стремиться к тому что у него будет один метод "сделать_хорошо". :-)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732332
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororИли заметить private на сущность internal - можешь пользоваться, но будь внимателен. Как по мне private разрушает одну из концепций ООП - наследование.
Отказ от управления областью видимости, оставив только public (а protected - как вам уже говорили всего лишь небольшая модификация public) есть полный отказ от первого принципа ООП - инкапсуляции.

Сокрытие реализации даёт огромное преимущество - возможность заменить реализацию в любой момент и гарантировать, что код, использующий предоставлемый этим чёрным ящиком открытый интерфейс, не сломается. Кроме того, это же гарантирует, что "пользователь" не сможет _случайно_ сломать реализацию, ковыряясь в "кишках" этого чёрного ящика. Но это вам тоже говорили.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732433
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на кодревью в стаковерфлоу целая дискуссия была по поводу private.
И это тонкий момент.
Многие считают что Private используется в 2х вариантах для инкапсуляции и скрытия информации и это две разные вещи, которые к тому же можно смешивать.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732440
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected?

У каждого класса есть контракт- для всех (public), для наследников (protected) и для избранных (package). Всё остальное- private.

Но это не отменяет кривости уровни видимости java, наследованной от C++ (где приходится поддерживать бинарную совместимость с Си).
В смысле стройности языка тут вне конкуренции eiffel, где:
1. Переменная, как бы не объявлял её, на запись всегда "private".
2. Указывается класс(ы), которым доступно свойство (переменная/метод)- если это базовый (ANY, аналог Object)- то это как бы public, если это сам класс- аналог protected, если ничего (NONE) - то private, а если конкретный набор классов- то они (и их потомки) увидят.

А уровень видимости "пакет" это дыра- для своих классов-то её закрыли, а остальные- пусть мучаются :)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732464
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк,
авторПо сути ваши завязки на внутренности классов и есть их форк.
Согласен, тогда может зайти с другой стороны, пусть будет private, но ввести дополнительно к extends - fork?

авторpublic class Foo fork Bar {
// получаю полный доступ к Bar
}
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732567
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororЛокшин Марк,
авторПо сути ваши завязки на внутренности классов и есть их форк.
Согласен, тогда может зайти с другой стороны, пусть будет private, но ввести дополнительно к extends - fork?

авторpublic class Foo fork Bar {
// получаю полный доступ к Bar
}


Похоже вы решаете не ту проблему.
Для "fork" давно есть решение - делать ч/з interface.
Если интерфейса нет, то можно "скрыть за фасадом".

Можно, если вам надо, вообще попробовать ч/з AOP :-)

Путей уже много.
Вы хотите добавить еще один "если нельзя, но очень хочется" :-)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732587
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле это вопрос правильного UseCase вашего софта. Если вы хотите не иметь
гангрену в заднем проходе - то используйте private. И ваш клиент будет максимально
правильно использовать ваше ПО. А господин Foror будет иметь огромный почтовый ящик
с ненужными вопросами на тему "зачем нужен этот филд" и как его использовать, но
видно он мозохист и ему нравится отвечать на глупые вопросы.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732861
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul, вроде ту проблему решаю, мне нужен полнейший доступ к внутренностям стороннего класса - делать fork в файловой системе - гиморно, т.к. из-за одного класса делать форк целой либы, или JDK... Наследовать интерфейсы не решает проблемы на практике, в теории оно конечно всё красиво - этакий сферический конь в вакууме, на практике совсем всё по другому. Юзать AOP опять же не то, я также могу юзать и рефлекшн.

Для такого случая как раз не хватает конструкции в ЯП типа fork, который бы полностью дал доступ к кишкам всего класса.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732862
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, пожалуйста не засоряйте тему
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732874
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forormad_nazgul, вроде ту проблему решаю, мне нужен полнейший доступ к внутренностям стороннего класса - делать fork в файловой системе - гиморно, т.к. из-за одного класса делать форк целой либы, или JDK... Наследовать интерфейсы не решает проблемы на практике, в теории оно конечно всё красиво - этакий сферический конь в вакууме, на практике совсем всё по другому. Юзать AOP опять же не то, я также могу юзать и рефлекшн.

Для такого случая как раз не хватает конструкции в ЯП типа fork, который бы полностью дал доступ к кишкам всего класса.

Если вам нужен "полнейший доступ к внутренностям стороннего класса", то вам нужен просто сам сторонний класс, т.е. его исходники.
Если вы используете сторонние классы, без исходников, то вам не нужен "полнейший доступ к внутренностям стороннего класса".
Для вас есть "интерфейс" в виде публичных методов, с которыми вы можете работать. Вот с ними и работайте. :-)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732877
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forormayton, пожалуйста не засоряйте тему
Конешно дружище. Как скажешь.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732898
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forormad_nazgul, вроде ту проблему решаю, мне нужен полнейший доступ к внутренностям стороннего класса

Если нужен доступ к private полям/методам, то либо автор ошибся, либо ты.
Скажи спасибо, что хоть reflection есть :)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732902
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, тема дебильная.

В своих классах, каждый сам себе хозяин, хочешь - используй, хочешь - не используй. Проблемы нет
В чужих либах, если либа хорошо спроектирована и расширяем - то проблемы вряд ли будут; если ее делали идиоты - то хоть private, хоть public... где наложить коровьих лепешек для будущих разработчиков... все равно найдут.

IMHO
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732906
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Питоне сделали все поля публичными. Потом стали придумывать соглашения:
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.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сях тоже существовали соглашения где функции начинающиеся с "underscore" считались
скрытыми, ядерными, или просто unsafe с точки зрения полезного эффекта. Тоесть
"лучше не трогать" руками если досконально не разобрался. Но думаю что красоты
в коде от этого не добавилось. Особенно плюсы, которые бьют рекорды
по степени загаженности кода различными соглашениями наподобие Венгерских
e.t.c. нотаций, макросов, проприетарных соглашений, библиотечных префиксов
и многое другое.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732954
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak, а где я говорил только о публичных полях? Я лишь, говорил, что private слишком огораживает разработчика, который хочет залезть во внутренности чужого класса. И сначала подумал о замене protected и private на internal, но потом пришел к выводу, что "дешевле" расширить extends до fork, который позволит расширить чужой класс и дать полный доступ к его кишочкам для работы на свой страх и риск. По крайне-мере это проще, чем делать форк, юзать рефлекш, аоп и прочие костыли.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732968
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororAlexander A. Sak, а где я говорил только о публичных полях? Я лишь, говорил, что private слишком огораживает разработчика, который хочет залезть во внутренности чужого класса. И сначала подумал о замене protected и private на internal, но потом пришел к выводу, что "дешевле" расширить extends до fork, который позволит расширить чужой класс и дать полный доступ к его кишочкам для работы на свой страх и риск. По крайне-мере это проще, чем делать форк, юзать рефлекш, аоп и прочие костыли.

Идеология java предполагает, что говнокод писать сложнее, чем на других языках, и это должно сразу бросаться в глаза.
Так что всё правильно- если тебе надо иметь доступ к private полям, то рефлекшн хорошо показывает, что кто-то из вас (тебя и автора библиотеки) идиот.
PS: ничего личного :)

PPS: когда-то давно сам менял значение protected-поля в чужом классе, делая фиктивного наследника и приводя объект (он прилетал снаружи) к моему типу. В delphi так можно :) Тогда считал авторов VCL в данном месте... скажем так... неумными.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732979
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororAlexander A. Sak, а где я говорил только о публичных полях? Я лишь, говорил, что private слишком огораживает разработчика, который хочет залезть во внутренности чужого класса.

Но необходимость возможности огородить все-таки не отрицается?
Получается, вопрос стоит в том, насколько можно разработчику огораживать другого разработчика. И есть предложение огородить разработчика от слишком сильного огораживания. Простите за тавтологию.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38732980
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь, вооруженный шаблоном Fork сможет унаследовать java.lang.String.
Что из этого выйдет - я не знаю но очевидно старый пьяница Гослинг имел какие-то
основания когда запрещал в явном виде наследование финального иммутабельного
самого распространённого и квази-атомарного типа строк в Javа. Очевидно что здесь
краеугольным камнем стоит идеология языка и важность и значимость использования
именно ОДНОЙ имплементации строк. Возможно так было сделать проще чем бить
по рукам нубасов и в тысячный раз в нотах и гайдах и прочих прокламациях от Sun(Oracle)
отписывать что вы закрашили multithrd. app именно своей мутабельной имплементацией
строк вместо того чтобы взять стандартную.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733039
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fororprivate слишком огораживает разработчика, который хочет залезть во внутренности чужого класса и иметь полный доступ к его кишочкам для работы на свой страх и риск.Плохому танцору тапочки жмут
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733132
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не только в String, вся модель безопасности идет лесом :) Хотя, если одному ленивому программисту это мешает... oracle должен обратить внимание
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733171
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пускай на Groovy переходит. Там всё либерально. Объявил сущность с филдами. Всё доступно.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733173
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там же вроде тоже есть возможность сделать поле (свойство) private. Получается, не подходит. Только Питон.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733174
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
авторвооруженный шаблоном Fork сможет унаследовать java.lang.String
Можно наблюдать опыт JavaScript, там много чего делали со String, но в итоге сошлись на том, что расширять фундаментальные типы, даже банальным добавлением метода - плохой тон. И как-то живут себе, пишут код )

Понятно, что java это довольно консервативная платформа, но тем не менее у неё есть JVM, на которой можно запилить свой ЯП с блэк джеком и дамами легкого поведения )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733179
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,
авторвся модель безопасности идет лесом
Тогда и рефлекшн нужно запретить, там ведь тоже можно сделать setAccessible(true). Но если модель безопасности можно настроить на запрет рефлекшн, то и fork можно запретить, если кому-то это нужно, так что ваш аргумент мимо кассы.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733181
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak,
авторТолько Питон.
И причем тут питон? Я же на форуме java...
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733183
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,
авторесли одному ленивому программисту это мешает
Лень - двигатель прогресса, еще один мимо кассы.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733187
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All,
авторПлохому танцору тапочки жмут
Причем тут тапочки и плохой танцор? Отследите логику - мне нужно расширить некоторую функциональность класса, которую разработчик не предусмотрел или не смог допилить. Но при этом, мне не хочется делать форк или поддерживать его библиотеку. Потому что это сложнее, чем сделать наследование вот прям тут в IDE и получить полный доступ к пакетам классов, как своим.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38733188
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наследование - не единственный вариант использование ООП.
Более того, это не самый лучший вариант.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38734893
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГде и когда в стандартных java-библиотеках,
открытых библиотеках типа apache commons .... e.t.c. и прочего опенсорца вам вдруг (!) внезапно понадобилось
значение приватной переменной базового класса?myfaces :)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38734938
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororFor All,
авторПлохому танцору тапочки жмут
Причем тут тапочки и плохой танцор? Отследите логику - мне нужно расширить некоторую функциональность класса, которую разработчик не предусмотрел или не смог допилить. Но при этом, мне не хочется делать форк или поддерживать его библиотеку. Потому что это сложнее, чем сделать наследование вот прям тут в IDE и получить полный доступ к пакетам классов, как своим.

Расширяйте, кто вам мешает?!
Зачем вам нужны приватные члены класса, для которого нет исходника?
Считайте, что вы о них вообще ничего не знаете.
Скорее всего решение не там где вы ищите. ;-)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735052
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororПонятно, что java это довольно консервативная платформа, но тем не менее у неё есть JVM, на которой можно запилить свой ЯП с блэк джеком и дамами легкого поведения )
Может тебе просто перейти на Груви?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735352
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, нет, мне проще будет реализовать fork фичу в виде плагина для eclipse, правда я пока не знаю, где там копаться, чтобы расширить валидатор для таких конструкций:


Код: java
1.
2.
3.
4.
5.
public class final XStandardWatchEventKinds fork java.nio.file.StandardWatchEventKinds {

    public static final WatchEvent.Kind<Path> ENTRY_NOT_CATCHED = 
         new StdWatchEventKind<Path>("ENTRY_NOT_CATCHED", Path.class);
}
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735358
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,

авторЗачем вам нужны приватные члены класса, для которого нет исходника?
Еще не сталкивался, чтобы не было исходников, но там где их нет, можно по байт-коду восстановить методы и классы и также форкнуть прямо в коде и сделать свою обертку, в случае необходимости. Но, вообще, я уже устал повторять, одно и тоже читайте внимательнее.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735382
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,
авторРасширяйте, кто вам мешает?!
Не кто, а что мне мешает. А мешают мне приватные методы и поля, из-за которых приходится использовать Reflection. Как один из недавних примеров, невозможности предусмотреть всё - в Nashorn нельзя было получить доступ к ScriptObject, т.к. он был обернут в ScriptObjectMirror в приватном поле. И тут вы конечно с умничаете и скажете нефиг лезть внутрь. Но мне было удобнее работать со ScriptObject напрямую и я запилил Reflection обертку.

А недавно, спустя несколько месяцев, я увидел новый класс ScriptUtils (если не ошибся с названием), где появились методы wrap и unwrap, чтобы работать со ScriptObject напрямую. И заметьте мне такой метод был нужен несколько месяцев назад и очевидно не мне одному тоже.

Так что, как видите очень простой пример, когда разработчик не смог предусмотреть, то что будет нужно пользователю. При этом, если придерживаться вашей логики, то я должен ждать несколько месяцев, пока нужный доступ откроют официально. Либо пользоваться рефлекшн. Но рефлекшн в более сложных случаях - громоздок. Поэтому нужно альтернативное решение, например такое как fork внутри кода, с использованием фич из АОП.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735603
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заметьте - сделали обёртки, а не превратили приватные поля в публичные.
Так что вы всё равно не правы.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735611
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov, так и я сделал обертку, только использовал для этого reflection ) Это я просто привел как пример, того, что разработчики не знают, что нужно открыть для пользователя. Вообще, спор из интересного обменами мыслями, перешел в какое-то перепирание и не умение вчитываться, в то что я предлагаю.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735612
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но оно и понятно, почему так, центр внимание смещен на заглавие этого топика, когда мысль ушла совсем в другую плоскость. Нужно просто создавать другой топик обсуждающий концепцию fork.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735624
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororЭто я просто привел как пример, того, что разработчики не знают, что нужно открыть для пользователяпользователюИсправлено мною.Вообще, спор из интересного обменами мыслями, перешел в какое-то перепирание и не умение вчитываться, в то что я предлагаю.Вы предлагаете лечить перхоть гильотиной.
Это, безусловно, надёжно, но создаёт массу весьма неприятных побочных эффектов.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735656
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororТак что, как видите очень простой пример, когда разработчик не смог предусмотреть, то что будет нужно пользователю. При этом, если придерживаться вашей логики, то я должен ждать несколько месяцев, пока нужный доступ откроют официально. Либо пользоваться рефлекшн. Но рефлекшн в более сложных случаях - громоздок. Поэтому нужно альтернативное решение, например такое как fork внутри кода, с использованием фич из АОП.

Зачем рефлекшен?!
Вы можете просто сделать форк (реальный)
И реализовать собственный класс. При условии, что исходники имеются.
Можно, конечно, если "очень надо" сделать костыль ч/з рефлекшен.
Но это костыль. И относиться к нему надо как к кастылю.
Правильнее было бы
1) Связаться с разработчиками и предложить свое решение (патч)
2) Взять исходники (если они в свободном доступе) и сделать форк

Если же нужна "полная свобода", то используйте C/C++, например.
Там можно делать все и немного еще. :-)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735752
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororА недавно, спустя несколько месяцев, я увидел новый класс ScriptUtils (если не ошибся с названием), где появились методы wrap и unwrap, чтобы работать со ScriptObject напрямую. И заметьте мне такой метод был нужен несколько месяцев назад и очевидно не мне одному тоже.

Все ошибаются. И не сделать метод доступа к private-полю там, где он надо- это ошибка проектирования класса. Бывает. Бывает и хуже. Много хуже.

Но предлагать отменить private из-за того, что не все умеют им пользоваться- это перебор.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38735971
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fororмне проще будет реализовать fork фичу в виде плагина для eclipse, правда я пока не знаю, где там копаться, чтобы расширить валидатор для таких конструкций:
Код: java
1.
2.
3.
4.
5.
public class final XStandardWatchEventKinds fork java.nio.file.StandardWatchEventKinds {

    public static final WatchEvent.Kind<Path> ENTRY_NOT_CATCHED = 
         new StdWatchEventKind<Path>("ENTRY_NOT_CATCHED", Path.class);
}

Ну допустим валидатор в еклипсе вы расширите, а как насчёт компилятора? Он-то (компилятор) не научен frok распознавать.
Компилятор кастомный возьмёте - валидатор байт кода такой класс не пропустит и JVM откажется его загружать.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38736774
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All, данная конструкция затем будет преобразована в нормальный java синтаксис, автоматически. На вскидку, смержить код и скомпилировать, положив в тот же пакет. А можно даже заместить форкнутый класс, новым, так даже интереснее ) В общем, это тот же форк в файловой системе, только все делается гораздо проще, автоматически, через IDE.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38736779
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. заместо того, чтобы создавать новый бранч в гите, просто объявляешь в коде, своего проекта, форк нужного класса. Пишешь тут же реализацию, а дальше все делается автоматом, когда проект билдится или ранится. Форкнутый класс подменяется вашим классом, для этого можно юзать тот же AOP. И не нужно парится с бранчами, всё просто, удобно и прозрачно.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38736811
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам уже говорили о побочных эффектах?
Изменение класса требует, как минимум, пересборки. Как максимум - запуск всех тестов.
И это ещё хорошо, что ява позволяет обойтись без перекомпиляции. Хотя и не всегда.

P.S. Я, конечно, понимаю желание сократить собственные проблемы за счёт увеличения чужих, но должно же быть хоть какое-то чувство меры?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737047
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov, нужно понимать, что данный метод не для глобального изменения стороннего проекта, иначе, действительно, проще сделать отдельный бранч. Данный метод скорее для расширения класса, без удаления методов или полей. Поэтому пересобирать сторонний проект нет смысла. Достаточно подменить класс в jar'e.

А вот запуск тестов, интересная идея, но тут не всегда получится их просто запустить.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737121
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мопжежвашуять ...
Сегодня одному разработчику пришла гениальная мысль доработать класс сторонней библиотеки и он его форкнул, завтра - другому и он тоже сделал свой форк, а послезавтра - третьему, совершенно неповинному человеку, понадобилось развернуть оба приложения в одном контейнере. И тут выяснилось, что форки "немножечко несовместимы".
И что этому третьему страдальцу делать? Слёзно умолять двух независимых разработчиков сделать общий форк?
Может проще послать лесом их обоих?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737138
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще: то, что вы упорно изобретаете, существует с незапамятных времён и называется патч.
Существует и более-менее стандартизированный способ "изготавливать" такие исправления.
Как пример: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)Выделено мною.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737191
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весь срач не читал, так что отвечу только ОП.

С первого взгляда да, как и написал ОП, вынесение потрохов класса в public дает больше свободы клиентам и меньше головной боли на тему "как заставить эту либу работать так, как нужно нам".

НО:
- самая главная проблема - обратная совместимость. Код, который может использоваться клиентом, уже нельзя поменять без риска сломать компиляцию у зависимых проектов или, еще хуже, внести в них баги. Именно поэтому API так тщательно проектируется, а вся реализация засовывается в private/default область видимости. Злобных буратино с рефлекшном можно игнорировать - сами виноваты.
- вторая проблема - понимабельность. Как правило, именно области видимости формируют у библиотеки API, т.е. что же надо у нее вызывать. Если сделать все public, потенциальный юзер библиотеки не сможет без вдумчивого изучения документации понять, как же ее дергать и какие классы надо использовать.
- третья проблема - декомпозиция. Главное, о чем должен помнить программист - это об ограниченности своего мозга, неспособного одновременно обрабатывать много понятий. Именно поэтому придумана инкапсуляция и блочная структура программ. Чтобы, обдумывая проблему, не нужно было загружать себе в голову детали реализации отдельных модулей.

Что же делать?
Проектирование API - это сложная задача, требующая большого опыта. В качестве библиотеки, где реализация тщательно скрыта от клиента, могу рекомендовать Guava. Образец расширяемой библиотеки для меня - старые модули spring framework, spring-beans например. Изучай, как пишут умные люди и будет тебе счастье.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737312
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororFor All, данная конструкция затем будет преобразована в нормальный java синтаксис, автоматически.Хотелось бы деталей. Как вот эта конструкция:
Код: java
1.
2.
3.
4.
5.
public class final XStandardWatchEventKinds fork java.nio.file.StandardWatchEventKinds {

    public static final WatchEvent.Kind<Path> ENTRY_NOT_CATCHED = 
         new StdWatchEventKind<Path>("ENTRY_NOT_CATCHED", Path.class);
}

будет выглядеть после преобразования с нормальный java синтаксис?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737415
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scf,
авторВесь срач не читал, так что отвечу только ОП

А стоило, ваши ответы лишь повысили энтропию этого топика, не дав ничего интересного.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737435
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
автор Слёзно умолять двух независимых разработчиков сделать общий форк?
Зачем умолять? Если уж возникла такая ситуация, то всегда есть возможность сделать свой форк на базе предыдущих. В любом случае, это ничем не отличается от Dependency Hell, когда сторонние библиотеки тянут разные версии одной и той же либы в зависимостях. У меня только недавно возникла такая ситуация, когда одна либа тянет старую, борадатую lucene 3.0, а другая 5.0. Различия на порядки и пойди разбери, что делать. Только самому вникать в код и переводить либу на последнюю lucene.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737449
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All,
Будет создан класс java.nio.file.StandardWatchEventKinds, который заместит изначальный java.nio.file.StandardWatchEventKinds сделав обычный merge текстовых файлов (исходников обоих классов), как это делается в любых vcs. Вообще, тут нужно продумать различные варианты, я лишь пока кидаюсь идеями, а как появится время, создам отдельный топик и распишу подробнее про fork.

Вот только думаю его нужно не fork назвать, а как-то по другому, т.к. это лишь расширенный extends. Т.е. класс лишь расширяется как при наследовании, но с полным доступом ко всем полям и методам.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737472
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Конечно, опасно делать сложные форки, с изменением тела методов, например, известных библиотек или JDK. Но с другой стороны не обязательно замещать оригинальный класс, может просто класть форк отдельно, с другим названием, в тот же пакет. Тогда будет гораздо безопаснее, но менее гибче. В общем, идея сложная, я для этого и вынес на обсуждение )
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737487
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororБудет создан класс java.nio.file.StandardWatchEventKinds, который заместит изначальный java.nio.file.StandardWatchEventKinds сделав обычный merge текстовых файлов (исходников обоих классов), как это делается в любых vcs.А если нет исходников?
И дизассемблирование не всегда поможет, т.к. имена приватных мемберов могут оказаться сгенерёнными дизассемблером, а не те, которые аффтар либы давал.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737709
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororЗачем умолять? Если уж возникла такая ситуация, то всегда есть возможность сделать свой форк на базе предыдущих.Этот третий - ни разу не программист. Это сисадмин, который в деталях знает какие параметры и почему должны быть прописаны и в комстроке и в настройках. Имеет право даже синтаксиса java не знать.
Но дело даже не в этом.
В этой жизни и так достаточно геморроя с разными версиями одних и тех же библиотек - зачем ещё больше его увеличивать?
В условиях, напомню, когда существует стандартный механизм: допилил, diff и - patch разработчикам.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737721
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororНе устарел ли private? Откуда вам знать, что может понадобиться пользователю ваших классов? Может достаточно public и protected?

Как ни странно, неофит не так уж и неправ -- есть много языков программирования с ООП, которые не поддерживают т.н. инкапсуляцию на уровне языка -- это делается на уговне соглашений о стиле программирования.

В Java private не так уж и строг -- через reflection приватные поля доступны.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737730
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fororне обязательно замещать оригинальный класс, может просто класть форк отдельно, с другим названием, в тот же пакетИ как рантайм должен компоновать куски? Ваш и "того парня"?
Как быть с Sealed: true в манифестах для библиотек "только чтение"?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38737734
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ Java private не так уж и строг -- через reflection приватные поля доступны... пока не установлен диспетчер безопасности. Редкость - да, но всё-таки.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38738058
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У ТС вообще странный вброс. "почему разработчику знают, что нужно пользователю". И что, сидеть ровно и ничего не делать? Формальный ответ - из ТЗ. А не формально... С чего он вообще взял, что через задание области видимости разработчик определяет, что нужно _пользователю_???!. Прежде всего, разработчик определяет то, что нужно _самому_разработчику. Так он указывает, какие части хочет скрыть или, наоборот, показать. Если кто-то наплевал и залез в private, то проблемы индейцев ... - понятно; ни кто не гарантирует ему отсутствие "интересного поведения", когда скрытая реализация изменится (а что, разве кто-то обещал её не менять?).
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38738281
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
автор... пока не установлен диспетчер безопасности. Редкость - да, но всё-таки.
А разве нельзя его точечно настраивать, скажем для таких-то классов можно рефлекшн, для всех остальных нельзя?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38738918
way2bariton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foror, я бы вообще при дизайне избегал бы наследования и иерархий. Любая иерархическая структура содержит в себе подвохи. И хотя мы видим их повсеместно, программы наши могут быть не такими сложными, какими они бывают при использовании иерархических структур.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739147
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
way2bariton,

у меня недавно начало складываться впечатление, что этап дизайна может растянуться на долгое время в связи с корректировками. А иерархическая структура будет являться лишь подведением итогов
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739260
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
way2baritonForor, я бы вообще при дизайне избегал бы наследования и иерархий.
дизайн чего? Слишком широкий термин.
Упростить Модель предметки - обязанность программиста.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739364
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
getOrdinatesArray
public double[] getOrdinatesArray()
    Gets the reference to the ordinate array of this JGeometry. Unless you know what you are doing, you should not modify the values in the returned array.
    Returns:
        the ordinates array corresponding to the server side MDSYS.SDO_GEOMETRY.SDO_ORDINATE_ARRAY. Null will be returned if this geometry is a point with optimal storage (i.e., the coordinate is stored in the SDO_GEOM.SDO_POINT field).


- мне нужно добавить точку к линии. Хакать этот класс или нет? ))))
- если да, то предупредить ли работодателя? )))
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739546
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так создай новый массив ординат (для новой полилинии) и создай ее заново. В чем проблема? IMHO

1. С полилинией подводных камней не вижу, но например для зоны, попытка добавления точки явно может привести с созданию некоректных зон (типа бабочки).
2. Как я понимаю, полилиния может быть не только полилинией, но и MULTIPOLYLINE. Тогда, тоже, добавление точки не такое уж и простое становится.
3. Ну и вообще, это больше объекты для хранения информации, а не для манипулирования и расчетов. IMHO
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739572
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
вот я получил объект из БД
Код: java
1.
2.
3.
4.
5.
			ResultSet rs = pstmt.executeQuery();
			rs.next();
			STRUCT st = (oracle.sql.STRUCT) rs.getObject("track_geom_8307");
			JGeometry geomSour = JGeometry.load(st);
			double[] arrpoints = geomSour.getOrdinatesArray();


в том и вопрос. Для модификации внутреннего поля рекомендуется создать новый объект с конструктором и совсем новым массивом точек.
Код: java
1.
JGeometry geomUpdate = JGeometry.createLinearLineString(arrpoints2,


Так?
ЗЫ.
Я и говорю, что такие большие классы защищают от ....(сабж). Могут быть некорректности.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739586
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Некорректности?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739594
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychi,
ну да. Метода setXXX нету.
Пробовать записать в память ещё 2-30 double?
Есть контракт на класс. Там всё написано.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739679
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Интересно, а со строками такое кого-нибудь припаривает?

И чем может быть обусловлена невозможность обновления состояния объекта в данном случае?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739692
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychiИнтересно, а со строками такое кого-нибудь припаривает?

Кого-нибудь- да :D

smackmychiИ чем может быть обусловлена невозможность обновления состояния объекта в данном случае?

Изначально- безопасность.
Но нашёлся ещё один профит- финал-объекты сильно ускоряют многопотчный код.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739696
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychi,
представим объект квадрат. Если к нему добавить точку недокументированным способом - он перестанет быть данным типом.
"Если бы у бабушки были яйца..."
..
Обусловлена ТЗ в котором не нужен полиморфизм или морфинг квадрата. Зачем делать класс дороже?
Строка тоже имеет ограничения.
В винде, если записать в память после символа окончания - испортим соседние объекты и получим "страшную ошибку для дельфистов".
В Java всё делают для безопасного кода))
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739703
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

То есть с "бабушкиными" классами все ок?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739708
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychiPetro123,
То есть с "бабушкиными" классами все ок?
для дедушки - да))
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38739760
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Тогда пойду позвоню скорее, чтобы final и private не трогали.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740342
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 Упростить Модель предметки - обязанность программиста.Бизнес аналитика.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740385
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For All,
Угу. Он в тексте ворда, а ты в классах.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740415
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Угу. Он в тексте ворда, а ты в классах.Упрощать ещё больше то, что он наупрощал?
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740461
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For All,
Бизнес аналитик понятия не имеет о программиоовании. И это хорошо. Так что, делать private или нет, решает либо программист. Либо много людей у кодировщика - системный архитектор, системный аналитик, тим лидер и т.д.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740628
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, в идеальной вселенной может кто-то и думает "делать private или нет", в реальном мире поджимают сроки и делают по принципу, что не public, то private . Ни кто не думает о том, как будут расширять его класс другие разработчики. А если думают, то в очень специфичных случаях, например, в ситуациях, когда класс явно создается для того, чтобы его расширяли через наследование в клиентском коде.

Причина тому, банальна, поджимают сроки, дедлайны горят, еще тесты писать... Кому надо сделают собственный бранч, а мы может и примет данные изменения, а может и нет. Я лишь хочу найти золотую середину, между созданием бранча всего проекта и использованием reflection. Но вижу, ни кто не поддерживают такую идею, у меня же нет времени пока ей заниматься ибо пилю другой проект. Но может в будущем обдумаю это более детально.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740662
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fororв идеальной вселенной может кто-то и думает "делать private или нет", в реальном мире поджимают сроки и делают по принципу, что не public, то private . Ни кто не думает о том, как будут расширять его класс другие разработчики. А если думают, то в очень специфичных случаях, например, в ситуациях, когда класс явно создается для того, чтобы его расширяли через наследование в клиентском коде.


Это неправда, если говорить о проектировании библиотек, которые ориентируются на большое количество пользователей, каждое поле проектируется и рассматривается с прицелом на расширение, иначе срок жизни таких библиотек будет чуть больше чем 0. Конечно косяки случаются, но это скорее исключение и зависит прежде всего от квалификации программистов. Такое ощущение что вы никогда не разрабатывали библиотек
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740670
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foror,
кто как пишет, это свойство характера. (у некоторых нет времени и мусор выносить)....
Я лично всегда закрываю по максимуму (если это не тяжело в IDE). Когда компилятор ругается - открываю ))))
На 10 наследников не вижу, но на один уровень выше - думаю)
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740674
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123...
в том и вопрос. Для модификации внутреннего поля рекомендуется создать новый объект с конструктором и совсем новым массивом точек.
...
Так?

Если рекомендуется в доке/ноте Oracle и проблем нет, то делать по доке.

Если проблемы есть, то без изменения кол-во объектов (размерности) ordinates, можно просто попытаться в ordinates[ нужное_вписать ] присвоить новый массив точек. Если верить декомпилятору, должно прокатит.

Но лучше на такое поведение не закладываться. А то сейчас хочется "точку добавить" (что можно), завтра захочется тип фигуры сменить (с линии на зону или обратно - imho вполне законное желание юзера) и наступит облом.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740780
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
+1
да, проблем нет - всё сделал.
Хибер, насколько знаю, не особо дружит с ГИС - полями.
Но, я понимаю, слишком специфическая область.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740827
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,
авторникогда не разрабатывали библиотек
Сейчас разрабатываю и если я еще буду думать, о том, как мои классы будут расширять внешние программеры, то мои либы не увидят продакшен. Тут банально не хватает времени просто продумать взаимосвязи между классами, а еще тесты нужно писать.

авториначе срок жизни таких библиотек будет чуть больше чем 0
С чего это? Библиотеки разрабатываются, чтобы их просто подключить и юзать через интерфейсы - это 95% их use case. Зачем библиотеке думать о том, как её будут расширять другие программеры?

Если вы подразумеваете фреймворк, то да, это важная вещь, но с другой стороны тут также думают лишь о клиентских классах. А вот заботу о расширении internal классов, я видел лишь в tapestry 5, да и то, там хватает своих гемороев.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740874
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если
FororСейчас разрабатываю и если я еще буду думать, о том, как мои классы будут расширять внешние программеры,
Тут банально не хватает времени просто продумать взаимосвязи между классами

То может
Foror то мои либы не увидят продакшен.

и к лучшему?


FororС чего это? Библиотеки разрабатываются, чтобы их просто подключить и юзать через интерфейсы - это 95% их use case. Зачем библиотеке думать о том, как её будут расширять другие программеры?
Если вы подразумеваете фреймворк, то да, это важная вещь, но с другой стороны тут также думают лишь о клиентских классах. А вот заботу о расширении internal классов, я видел лишь в tapestry 5, да и то, там хватает своих гемороев.


HttpClient для вас это библиотека или фреймворк? Правильно, большая часть кода не должна волновать клиента. В местах где скорее всего понадобится кастомизация и вводят интерфейсы в качестве точек расширения, как ни странно после тщательного обдумывания взаимосвязи между классами. Если вы используете библиотеку\фреймворк и вам нужно лезть внутрь имплементации - это или говно-библиотека, или очень редкий случай, или вы используете библиотеку не для того, для чего она изначально задумывалась. Из этих 3 вариантов, валидный только "очень редкий случай", вводить для этого новую языковую конструкцию - юред, рефлекшн вполне годен для этого. Остальные два случая - это ошибка проектировщика, либо на стороне библиотеки, либо на стороне клиента
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38740940
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororСейчас разрабатываю и если я еще буду думать, о том, как мои классы будут расширять внешние программеры, то мои либы не увидят продакшенВаши библиотеки должны проектироваться так, чтобы у их пользователей не возникало желания "расширять(ся)".

P.S. Наследование не единственный и, часто, не лучший вариант использования ООП.
...
Рейтинг: 0 / 0
Видимость private, почему разработчику знают, что нужно пользователю?
    #38741352
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororPetro123, в идеальной вселенной может кто-то и думает "делать private или нет", в реальном мире поджимают сроки и делают по принципу, что не public, то private . Ни кто не думает о том, как будут расширять его класс другие разработчики. А если думают, то в очень специфичных случаях, например, в ситуациях, когда класс явно создается для того, чтобы его расширяли через наследование в клиентском коде.

На самом деле вытаскивая любые потроха наружу (даже в protected) нужно понимать, во-первых, как это будет использоваться, а, во-вторых, принимать на себя обязательства не изменять это.
Если же автор не готов к этому- да, лучше private.

Вообще разработка общедоступных библиотек- это очень сложная вещь. Давно известно правило- "пока у тебя нет трёх применений библиотеки- ты её хорошо не сделаешь". Сделать без этого могут единицы людей. Причём "использовать" и "расширять"- это очень разные вещи, которые надо проектировать отдельно. Так что вполне может оказаться, что интерфейс библиотеки был взят с потолка.

Многие из шаблонов проектирования сделаны для того, чтобы помочь делать хорошо сразу. Правда в итоге всё одно пришли к "simple code"- делать просто, а когда найдутся применения- допилить. Но это возвращает обратно к "трём примерам использования".
...
Рейтинг: 0 / 0
124 сообщений из 124, показаны все 5 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Видимость private, почему разработчику знают, что нужно пользователю?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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