你们认为什么?常量应该大写?或者这是一个古老的做法?所以......我应该大写我的常量吗?
const int MY_CONSTANT = 5;
与
const int myConstant = 5;
你们认为什么?常量应该大写?或者这是一个古老的做法?所以......我应该大写我的常量吗?
const int MY_CONSTANT = 5;
与
const int myConstant = 5;
在C++中至少,你应该避免资本常数,以避免与#定义,这是规范地资本混淆。
这是Java语言中命名常量的官方和事实标准,所以除非你认为Java是一种古老的语言,否则我猜测答案是否定的。
因为Java十年前从C/C++中采用了某些东西,这意味着我们需要继续这种做法吗? – 2008-11-19 22:31:35
我并没有建议你应该继续练习,我只是指出这个习俗仍然被广泛使用,因此不能被视为奥术。 – 2008-11-19 22:55:17
你应该在你使用的语言/平台上做什么约定。例如,在.NET中,常数应该是pascal,例如,
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建议帕斯卡情况为常量。
此外,请检查此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