我正在用C#重构一个库,我发现了很多大写常量:
INTERVAL, TIME, SECONDS.
我认为这是一种不必要的,我个人更喜欢用骆驼案声明一切。关于更好的方法存在一些确切的定义?
答案 0 :(得分:8)
最终情况不会有任何区别(除非它与类型/关键字/等碰撞)。所以一致性是主要的事情。
Capitalization Conventions不区分常量和其他成员 - 但这些只是指南。所以它会是 pascal-case 。
答案 1 :(得分:4)
全封闭常数是一种常见的约定......
......但是一个惯例只是那个,而且是任意的。如果您正在为自己编写代码,则没有令人信服的理由不选择自己的代码。如果您与其他开发人员合作,则必须同意命名约定。
如果您正在撰写将由团队之外的其他人使用的内容,那么您最好坚持使用最常见且可识别的命名约定以避免混淆。
最后,一致性是最重要的。
答案 2 :(得分:3)
MSDN page on constants表明常量应该像静态字段成员一样对待。在这种情况下,Captialization Conventions表明PascalCasing是合适的。
如果您的常量是公共API的一部分,我建议遵循此约定。
但是,如果常量只是私有成员,则可以使用任何您希望的约定。在这种情况下,MSDN实际上有lower case constant members in the Constant help page,例如。
答案 3 :(得分:2)
完全符合您的团队/团队在定义编码指南时所选择的标准。
如果其他人都使用ALL_UPPER_CASE,那么你应该排队。
就个人而言,我更喜欢使用大写字母来表示常量,所以我只是通过查看它们就知道它们是什么。
答案 4 :(得分:1)
Microsoft's recommendations没有提及全大写的名字。它们没有明确指定常量的大小写约定,但它们有一个用于枚举值(PascalCase
)和只读静态字段(也是PascalCase
)。因此,根据Microsoft的指南,PascalCase
可能是您的最佳选择。
答案 5 :(得分:1)
我通常将PascalCase用于公共常量,将camelCase用于私有常量。例外情况是从旧的C / C ++库或类似库(例如与P / Invoke一起使用的那些)导入常量时。 - 我把它们保存在原始库中。
答案 6 :(得分:0)
这是所有的偏好,但大写是我相信回到#define,因为const与我的理解并不相差甚远。
更具体地说,我认为大写const只是另一种描述方法,你在一个方法中看到所有大写的东西,你知道它是一个const,如果它是驼峰的情况下它是本地的,驼峰的情况是_是成员私有的, pascal案例是成员公开。
虽然这只是一些人喜欢的一致性标准,但它确实是优先考虑的,尽管我认为原因正如我所说的那样,只是当你看到所有的大写时你会明白它是一个常量。