![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Народ, где вы храните константы и почему?
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Хранить константы в интерфейсе это вроде антипаттерн. -------------------- Lost.... |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Вот тут нашлось:
JLS3 "13.4.9 final Fields and Constants"
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Константы следует хранить там, где они нужны
![]() -------------------- ![]() ![]() |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 2 Всего: 13 |
То есть порочной практикой является наличие вообще каких-либо ОБЩИХ параметров, настраивающих приложение? Правильно я понял ?
И это потому, что нарушает ООП, поскольку глобальные (static) параметры это явное нарушение. То есть надо помещать необходимые параметры (дублируя их) во все классы? В какой момент? При инициализации приложения ? |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Нет, вы неправильно поняли. Точнее вы ничего не поняли. При чём здесь ООП - вообще непонятно. Констант, глобальных для всего приложения практически не бывает - все имеют "хозяина", о дублировании чего вы ведёте речь - непонятно. Константы, отвечающие за позиционирование визуальных компонент, разумнее поместить в абстрактный класс, который наследуют поддерживающие позиционирование классы визуальных компонент; константы, обозначающие системные свойства, разумнее поместить в класс, с помощью которого осуществляется доступ к этим свойствам, и т. д, и т. п. Это всегда лучше, чем аккумулирование констант в некоем интерфейсе, не имеющем отношения к пользователям этих констант. Ибо понятнее. Это сообщение отредактировал(а) w1nd - 31.3.2008, 09:34 -------------------- ![]() ![]() |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 2 Всего: 13 |
А как же, например быть с константой PI, определенной в Math классе? Подвергнуть разработчиков SUN остракизму? Не знал, откровенно говоря, что разделитель строк я всегда должен "выковыривать" вызовом метода класса System, а константу использовать неправильно. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Quod licet Jovi non licet bovi - что дозволено Юпитеру(Sun-у) не дозволено быку.
При разработке библиотек для Java заранее неизвестно, где константы понадобятся - поэтому они и объявлены в специальных классах и интерфейсах. Простому же пользователю обычно заранее известно, где его константы будут использоваться, поэтому ему луше следовать совету w1nd. |
|||
|
||||
w1nd |
|
||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
На мой вгляд, эта константа как раз на своём месте.
Почему неизвестно? Если делается класс, методы которого воспринимают некоторые значения, то именно в этом классе и объявляются константы, соответствующие этим значениям. -------------------- ![]() ![]() |
||||
|
|||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
В общем я нашел ответ на свой вопрос. Я вел речь о константах, которые могут использоваться в нескольких классах не связанных общей иерархией. Я просто приведу пример являющийся ответом на мой вопрос, если есть по нему вопросы, пожалуйста, задавайте, но перед этим, пожалуйста, ознакомьтесь с двумя документами:
http://java.sun.com/j2se/1.5.0/docs/guide/...tic-import.html http://java.sun.com/docs/books/jls/third_e...omp.html#13.4.9 Теперь мой подход:
Это сообщение отредактировал(а) Royan - 1.4.2008, 14:04 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Гм. Именно для продемонстрированных констант я не вижу никакого смысла в таком вынесении - они явно не общие ![]() -------------------- ![]() ![]() |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Какой же вы занудливый человек w1nd, мимо вас, поди, ни одна соринка не пролетит - все сдуете. Это всего лишь пример измените имена на что душе угодно.
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
ki6opr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
а можно вопрос а зачем для констант делать свой класс есть замечательная вещь Enum называется
![]() |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Есть грешок ![]() Всё равно ![]() ![]() Это сообщение отредактировал(а) w1nd - 2.4.2008, 08:19 -------------------- ![]() ![]() |
|||
|
||||
ecologist |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: 2 Всего: 9 |
А по-моему надо там, где логика подсказывает.
В конце концов public static final - и хоть в классе, хоть в интерфейсе. Все зависит от того к чему эта константа привязывается - а использовать советы по проектированию надо с головой. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |