Быстрый вопрос Java о частных статических конечных ключевых словах для полей
Я объявляю поле:
private static final String filename = "filename.txt";
Во-первых, имеет ли смысл private static final
? Если нет, существует ли стандартная принятая последовательность или соглашение?
Во-вторых, filename
в моем приложении исправлено. Лучше ли было хранить его ценность?
Ответы
Ответ 1
Я использую Checkstyle с Eclipse, что приводит к предупреждению, если декларация находится в другом порядке с тем, который вы указали, ссылаясь на спецификацию языка Java (JLS). Например,
private final static String filename = "filename.txt";
приводит к
'static' modifier out of order with the JLS suggestions.
Они имеют эту страницу, в которой указан порядок, который они ожидают, но следуя ссылкам на этой странице до JLS Я не вижу ничего, чтобы поддержать их утверждение предлагаемого порядка.
Сказав это, порядок, который они предлагают, кажется, соответствует порядку в большей части кода, который я видел, поэтому он кажется хорошим соглашением, как любой из них.
Ответ 2
-
Нет. Но это та последовательность, которую я обычно вижу.
-
Это разумный выбор, но некоторые предпочли бы конфигурационный файл, Properties или другой формат файла (например, XML), Таким образом, вы можете изменить имя файла без перекомпиляции.
Ответ 3
Общепринято в Java задавать константы (static final
values) все-верхнее имя, поэтому я бы написал:
private static final String FILENAME = "filename.txt";
См. также Условные обозначения кода для языка программирования Java. (Это соглашения Sun, которые используются большинством Java-программистов).
Ответ 4
Наиболее приемлемым для этих ключевых слов является private static final
. Также вы можете запомнить порядок этих ключевых слов, используя шаблон PSF, который:
P = > частный/открытый/защищенный
S = > статические/абстрактные/...
F = > окончательный
Ответ 5
-
Порядок не имеет значения, но вы всегда можете поиграть с ним - есть только 6 возможностей для тестирования.
-
Я не знаю какого-либо соглашения, хотя сначала ставлю модификатор видимости (public/private/protected), чтобы вы могли его разглядеть, и он выстраивается в линию.
-
Если это исправлено, вы можете это сделать, но я всегда думаю, что что-то является константой, чтобы обнаруживать позже (во время тестирования, например), что я хочу передать. Аргумент в командной строке или файл свойств работает в этом случае и является минимальным усилием для настройки.
Ответ 6
см. http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.1
8.3.1 Модификаторы полей
FieldModifiers:
FieldModifier
FieldModifiers FieldModifier
FieldModifier: один из
Annotation public protected private
статический окончательный переходный летучий
...
Если в объявлении поля появляются два или несколько (разных) модификаторов полей, обычно они, как правило, не требуются, чтобы они отображались в порядке, соответствующем показанному выше в произведении для FieldModifier.
Ответ 7
Чтобы завершить хороший ответ by @Hobo выше с помощью текущей ссылки
8.1.1. Модификаторы классов
Объявление класса может включать модификаторы классов.
ClassModifier:
(one of)
Annotation public protected private
abstract static final strictfp
[...]
Если в классе появляются два или несколько (отдельных) модификаторов класса декларация, тогда обычно, хотя и не требуется, что они появляются в порядке, согласующемся с показанным выше в производстве для ClassModifier.