Поместить все константы в один файл - ужасная идея! Особенно убер-константный анти-паттерн, где все константы находятся в Interface
, который каждый класс имеет implement
. 10 способов до воскресенья страшны! Это была плохая идея, когда люди начали делать это еще в начале 1990-х до Java! Это определенно плохая идея в 2012 году!
Это означает, что вы смешиваете много несвязанной информации и создаете ненужные зависимости каждый раз, когда вы импортируете этот файл uber-Constants. Вещи, которые идут вместе, должны быть вместе в Enum
или, по крайней мере, в Class
, который использует их в качестве аргументов своих методов, чтобы при их изменении вы знали, как легко проводить анализ воздействия.
Представьте себе Color
константы, смешанные с DaysOfTheWeek
константами, смешанными с другими константами бизнес-доменов, и в одном файле их будет сотни, если не тысячи. Как это можно считать хорошей идеей? В каждом не надуманном случае Enum
, который является public inner
членом Class
, является лучшим решением.
Это также означает, что у вас есть единое плоское пространство имен, чтобы попытаться создать имена, которые не конфликтуют, тогда они не могут понять, к чему они принадлежат и как их следует использовать. Это никогда не является положительным упражнением.
При проектировании и рефакторинге вы всегда должны:
Стремитесь к высокой сплоченности , это означает, что связанные вещи должны быть как можно ближе друг к другу.
Стремитесь к слабой связи это означает, что не допускайте попадания посторонних предметов в другие несвязанные области.
Стремитесь к самодокументируемому сопровождаемому коду, десяткам или сотням объявлений private static final String/int
, смешанным вместе, не соответствует никому определенному стандарту!
В 2012 году константы в стиле C являются плохим решением, поскольку теперь у вас есть Enum
в качестве инструмента, вы должны сосредоточиться на преобразовании как можно большего количества этих групп констант в Enum
, где это возможно. Enum
является типобезопасным и может иметь другие атрибуты, свойства и поведение, связанные с ним, чтобы сделать их intelligent
. Это путь, чтобы идти вниз.