2008-11-19 58 views
7

你们认为什么?常量应该大写?或者这是一个古老的做法?所以......我应该大写我的常量吗?

const int MY_CONSTANT = 5; 

const int myConstant = 5; 
+0

您忘了将const添加到您的第二个示例中 – rmeador 2008-11-19 22:31:06

回答

2

在C++中至少,你应该避免资本常数,以避免与#定义,这是规范地资本混淆。

0

这是Java语言中命名常量的官方和事实标准,所以除非你认为Java是一种古老的语言,否则我猜测答案是否定的。

+0

因为Java十年前从C/C++中采用了某些东西,这意味着我们需要继续这种做法吗? – 2008-11-19 22:31:35

+0

我并没有建议你应该继续练习,我只是指出这个习俗仍然被广泛使用,因此不能被视为奥术。 – 2008-11-19 22:55:17

12

你应该在你使用的语言/平台上做什么约定。例如,在.NET中,常数应该是pascal,例如,

SomeConstant 

在其他语言中可能会有所不同。

0

什么语言?

不,但您应该将它们放在类或名称空间中。

1

如果您要添加或维护现有的代码库,请尽量避免让人们感到困惑。如果这是一个新项目,请与您的团队协商一次约定,然后执行此操作。

如果是您自己的项目,请按照您的习惯进行操作。

2

实际上,这可能不是语言不可知的。有些语言有使用首都的传统,有些则没有。例如,在C++中,大写通常仅用于枚举并仅定义,而Java则更加宽泛地使用大写。

2

个人感觉是命名约定应该是有意义的,并且只要它们提供了意义就是好的。除此之外,最好的方式是遵循你所使用的语言的约定。否则,而不是为读者简化,你会(轻度)混淆。例如,在java中

THIS_CONSTANT 

是编写静态决赛的常用方法。其他语言有不同的风格。

1

我不会大写我的常量。实际上,我主动地使用'const',以便将它们转换为大写字符是没有意义的。例如:

const size_t size = v.size(); 
for(size_t i = 0; i < size; ++i) ... 

“常量”的这种用法看似无用,但它给了信心,“大小”是在那个时间点矢量大小的快照。编译器会确保整个范围都是如此。

但是,我确实把我的MACROS大写了。但是,使用#define声明常量是一个不同的主题。

0

我大写并使用.Net,Java和PHP的下划线。

0

我更喜欢常数是所有大写,除非有一个理由不。

4

所有大小写约定是为宏而发明的,那里有充足的理由大叫,“小心!宏!” (有很多方法搞砸了。)语言级别的常量是一个驯兽者,但惯例持续存在。

使用你的判断;那里有一个强大的会议,就像我在Java世界中所想的那样,与它斗争是浪费精力。

5

有效的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); 

这里的报价:

按照惯例,这些领域包括有大写字母的名称,并以下划线分隔单词。这些字段包含原始值或对不可变对象的引用至关重要。

...否则,如果可变对象看起来像是常量,他们会感到困惑。

相关问题