Что вы, ребята, думаете? Должны ли капиталисты капитализироваться? Или это архаичная практика? Так что ...Должен ли я использовать мои константы?
const int MY_CONSTANT = 5;
против
const int myConstant = 5;
Что вы, ребята, думаете? Должны ли капиталисты капитализироваться? Или это архаичная практика? Так что ...Должен ли я использовать мои константы?
const int MY_CONSTANT = 5;
против
const int myConstant = 5;
В C++, по крайней мере, вы должны избегать спекулируя констант, чтобы избежать путаницы с #defines, которые канонически капитализируются.
Это официальный стандарт де-факто для констант именования языка Java, поэтому, если вы не считаете Java архаичным языком, я думаю, что ответ отрицательный.
Так как Java взяла что-то из C/C++ более десяти лет назад, это значит, что нам нужно продолжить практику? – 2008-11-19 22:31:35
Я не предлагал вам продолжать практику, я просто указал, что это соглашение все еще широко используется и поэтому не может считаться тайным. – 2008-11-19 22:55:17
Вы должны сделать то, что конвенция на языке/платформе, которую вы используете. Например, в .NET-константах должна быть установлена паскаль, например.
SomeConstant
В других языках это, вероятно, будет отличаться.
Какой язык?
Нет, но вы должны поместить их в класс или пространство имен.
Если вы добавляете или поддерживаете существующую базу кода, делайте то, что они делают, чтобы не путать людей. Если это новый проект, соглашайтесь с соглашением с вашей командой и делайте это.
Если это ваш собственный проект, сделайте то, к чему вы привыкли.
Собственно, это не может быть языковым агностиком. Некоторые языки имеют традицию использования столиц, а другие - нет. Например, в C++ верхний регистр обычно используется для перечислений и определяет только, в то время как Java использует прописные буквы более либерально.
Личностное чувство состоит в том, что соглашения об именах должны означать что-то и хороши, пока они обеспечивают смысл. Помимо этого лучше всего следовать правилам языка, на котором вы работаете. В противном случае вместо упрощения для читателя вы (слегка) запутываете. Например, в java
THIS_CONSTANT
является распространенным способом записи статических финалов. Другие языки имеют разные стили.
Я не использую свои константы. Фактически, я использую «const» так активно, что нет смысла их использовать. Например:
const size_t size = v.size();
for(size_t i = 0; i < size; ++i) ...
Это использование «сопзЬ» может показаться бесполезным, но это дает уверенность в том, что «размер» является снимок размером этого вектора в этот момент времени. Компилятор будет убедиться, что это верно для всей области.
Я, однако, капитализирую свои MACROS. Но использование #define для объявления констант - это другая тема.
Я использую символы подчеркивания для .Net, Java и PHP.
Я предпочитаю, чтобы константы были все шапки, если нет причин не делать этого.
IDesign C# coding standard рекомендует корпус Pascal для констант.
Кроме того, ознакомьтесь с этим related question.
Соглашение о всех шапках было изобретено для макросов, где были веские основания кричать: «Осторожно! Макро!». (Существует множество способов испортить.) Константа языкового уровня - укротитель, но соглашение сохранилось.
Использовать ваше мнение; где есть сильная конвенция, как я полагаю, в мире Java, это пустая трата энергии для борьбы с ней.
Эффективная Java рекомендует вам столицы и символы подчеркивания для static final
значений неизменяемых. В противном случае они не являются постоянными.
т.е.
public static final String ID_FOO_BAR = "org.acme.foo.bar";
public static final List<String> sList = new List<String>();
public static final List<String> LIST = Collections.unmodifiableList(sList);
public static final String[] sArray = new String[] {"foo", "bar", "baz" }; // FindBugs complains, if this is public.
public static final List<String> ARRAY = Arrays.asList(sArray);
Вот цитата:
По соглашению, такие поля имеют имена, состоящие из прописных букв, со словами, разделенными подчеркиванием. Крайне важно, чтобы эти поля содержали либо примитивные значения, либо ссылки на неизменяемые объекты.
... в противном случае, если изменяемые объекты выглядят как константы, они путаются как таковые.
Вы забыли добавить const к вашему второму примеру – rmeador 2008-11-19 22:31:06