powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Видимость private, почему разработчику знают, что нужно пользователю?
25 сообщений из 124, страница 2 из 5
Видимость 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
25 сообщений из 124, страница 2 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / Видимость private, почему разработчику знают, что нужно пользователю?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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