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


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