2014-09-15 1 views
2

Как следует называть java-метод-локальные константы?Именование методов-локальных констант в контрольном стиле

Если константа используется только в контексте метода, она должна быть объявлена ​​внутри метода (в виде переменной final). Но какой синтаксис следует использовать? Для меня самым читаемым способом является использование ALL_CAPS, но Checkstyle, кажется, не согласен:

int compute(int n) { 
    final int FACTOR = 27; 
    return FACTOR * n; 
} 

произведет предупреждение Checkstyle:

Name 'FACTOR' must match pattern '^[a-z][a-zA-Z0-9]*$'. 

Смотрите также: What are your thoughts on method scoped constants?

+0

Это постоянный. Почему вы хотите распределять память и инициализировать переменную каждый раз при вызове метода? Определите его как константу, вне метода. –

+0

@JB Nizet: http://stackoverflow.com/a/244315/319621 – gatinueta

+0

Если вы согласны с этим, то также понимаете, что вы не определяете константу, а переменную. А переменные записываются в нижнем регистре. –

ответ

2

, в настоящее время популярный стиль руководства, говорит:

Локальные имена переменных записываются в lowerCamelCase [...] Даже когда окончательное и неизменное, локальные переменные не считаются постоянными, и не должны быть названы константами.

Это также соглашение берет на себя LocalFinalVariableName проверки Checkstyle в.

0

все локальные переменные имя должно быть в маленькой букве.

int compute(int n) { 
final int factor= 27; 
return factor*n; 

}

и если его постоянная определить его вне вашего метода и назвать его в ALL_CAPS

1

Константы - имена переменных, объявленных констант класса и ANSI констант должны быть все в верхнем регистре со словами, разделенными подчеркиваниями ("_"). (Константы ANSI следует избегать, для простоты отладки.)

Источник: http://www.oracle.com/technetwork/java/codeconventions-135099.html

Как это:

final int FACTOR = 27; 
int compute(int n) { 
    return FACTOR*n; 
} 

Замечено, что, поскольку это постоянное поле, я переместил его пределами метод.

EDIT 2:

При наличии конечной переменной внутри метода, вы предположим следовать код конвенции локальной переменной, которая:

Переменные - для переменных, кроме, все константы экземпляра, класса и класса находятся в смешанном случае с строчной первой буквой. Внутренние слова начинаются с заглавными буквами. Имена переменных не должны начинаться с символа подчеркивания _ или символа доллара $ символов, хотя оба разрешены.

Имена переменных должны быть короткими, но значимыми. Выбор имени переменной должен быть мнемоническим, то есть предназначенным для указания случайному наблюдателю намерения его использования. Следует избегать односимвольных имен переменных , за исключением временных переменных «throwaway». Общими именами временных переменных являются i, j, k, m и n для целых чисел; c, d и e для символов.

Таким образом, предупреждение о контроле.

+0

Мне нравится лучше локально: http://stackoverflow.com/a/244315/319621 – gatinueta

+0

@gatinueta, это действительно не зависит от того, что вам нравится, а что нет. Я считаю, что вы должны учитывать все возможные факторы. Будет ли эта «конечная» переменная использоваться другими методами? Может ли другой класс узнать об этом? Прочтите другие ответы. Это очень хорошо. Кстати, я изменил свой ответ. – lxcky

+1

Правильно, не важно, что мне нравится, я должен уточнить: я предпочитаю локально объявленный окончательный для константы класса, если значение используется только в этом методе, и нет другой причины, по которой он должен быть видимым вне этого метода. – gatinueta

0

Насколько я знаю, прописные обозначения используются только для публичных «констант», поскольку они создают часть API вашего класса или библиотеки.

Если вы сделаете локальную переменную метода, то применим нормальную нотацию для переменных. Это просто «бывает», чтобы быть окончательным.

Смежные вопросы