Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Где лучше хранить константы в интерфейсе или |
Автор: Royan 30.3.2008, 15:48 |
Народ, где вы храните константы и почему? |
Автор: Kangaroo 30.3.2008, 17:00 |
Хранить константы в интерфейсе это вроде антипаттерн. |
Автор: Royan 30.3.2008, 21:08 | ||
Вот тут нашлось: JLS3 "13.4.9 final Fields and Constants"
|
Автор: w1nd 31.3.2008, 00:41 |
Константы следует хранить там, где они нужны ![]() |
Автор: mbasil 31.3.2008, 09:17 |
То есть порочной практикой является наличие вообще каких-либо ОБЩИХ параметров, настраивающих приложение? Правильно я понял ? И это потому, что нарушает ООП, поскольку глобальные (static) параметры это явное нарушение. То есть надо помещать необходимые параметры (дублируя их) во все классы? В какой момент? При инициализации приложения ? |
Автор: mbasil 31.3.2008, 12:07 | ||
А как же, например быть с константой PI, определенной в Math классе? Подвергнуть разработчиков SUN остракизму? Не знал, откровенно говоря, что разделитель строк я всегда должен "выковыривать" вызовом метода класса System, а константу использовать неправильно. |
Автор: math64 31.3.2008, 12:35 |
Quod licet Jovi non licet bovi - что дозволено Юпитеру(Sun-у) не дозволено быку. При разработке библиотек для Java заранее неизвестно, где константы понадобятся - поэтому они и объявлены в специальных классах и интерфейсах. Простому же пользователю обычно заранее известно, где его константы будут использоваться, поэтому ему луше следовать совету w1nd. |
Автор: w1nd 31.3.2008, 12:58 | ||||
На мой вгляд, эта константа как раз на своём месте.
Почему неизвестно? Если делается класс, методы которого воспринимают некоторые значения, то именно в этом классе и объявляются константы, соответствующие этим значениям. |
Автор: Royan 1.4.2008, 14:02 | ||
В общем я нашел ответ на свой вопрос. Я вел речь о константах, которые могут использоваться в нескольких классах не связанных общей иерархией. Я просто приведу пример являющийся ответом на мой вопрос, если есть по нему вопросы, пожалуйста, задавайте, но перед этим, пожалуйста, ознакомьтесь с двумя документами: http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.4.9 Теперь мой подход:
|
Автор: w1nd 1.4.2008, 21:38 |
Гм. Именно для продемонстрированных констант я не вижу никакого смысла в таком вынесении - они явно не общие ![]() |
Автор: Royan 2.4.2008, 00:15 |
Какой же вы занудливый человек w1nd, мимо вас, поди, ни одна соринка не пролетит - все сдуете. Это всего лишь пример измените имена на что душе угодно. |
Автор: ki6opr 2.4.2008, 07:16 |
а можно вопрос а зачем для констант делать свой класс есть замечательная вещь Enum называется ![]() |
Автор: w1nd 2.4.2008, 08:16 | ||
Есть грешок ![]() Всё равно ![]() ![]() |
Автор: ecologist 2.4.2008, 09:35 |
А по-моему надо там, где логика подсказывает. В конце концов public static final - и хоть в классе, хоть в интерфейсе. Все зависит от того к чему эта константа привязывается - а использовать советы по проектированию надо с головой. |