private const int THE_ANSWER = 42;
or
private const int theAnswer = 42;
我个人认为,在现代ide中,我们应该使用camelCase,因为ALL_CAPS看起来很奇怪。你怎么看?
private const int THE_ANSWER = 42;
or
private const int theAnswer = 42;
我个人认为,在现代ide中,我们应该使用camelCase,因为ALL_CAPS看起来很奇怪。你怎么看?
当前回答
在其文章常量(c#编程指南)中,微软给出了以下示例:
class Calendar3
{
const int months = 12;
const int weeks = 52;
const int days = 365;
const double daysPerWeek = (double) days / (double) weeks;
const double daysPerMonth = (double) days / (double) months;
}
因此,微软似乎一直在推荐使用camel套管。但是请注意,这些常量是局部定义的。
可以说,外部可见常数的命名更令人感兴趣。实际上,微软在. net类库中将其公共常量记录为字段。下面是一些例子:
Int32。MaxValue 字符串。空(实际上是静态只读) 数学。π 数学。E
前两个是pascal套管的例子。第三个似乎遵循了微软的两个字母首字母缩写的大写惯例(尽管pi不是丙烯酸酯)。第四个似乎表明,两个字母的丙烯名的规则延伸到一个字母的首字母缩略词或标识符,如E(代表数学常数E)。
此外,在其资本化约定文档中,微软非常直接地指出,字段标识符应该通过pascal套管命名,并为MessageQueue提供了以下示例。InfiniteTimeout和UInt32。分钟:
public class MessageQueue
{
public static readonly TimeSpan InfiniteTimeout;
}
public struct UInt32
{
public const Min = 0;
}
结论:对公共常量使用pascal套管(这些常量被记录为const或静态只读字段)。
最后,据我所知,微软不提倡对私有标识符进行特定的命名或大写约定,如问题中给出的示例所示。
其他回答
首先,匈牙利符号是使用前缀来显示参数的数据类型或预期用途的实践。 微软的命名惯例对匈牙利符号说不 http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx
不鼓励使用大写: Pascal Case是可接受的惯例和尖叫帽。 http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming
微软还在这里声明,如果要匹配现有的方案,则可以使用UPPERCASE。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx
这差不多就是总结了。
我实际上倾向于在这里使用PascalCase -但出于习惯,我对UPPER_CASE感到内疚…
推荐的命名和大写约定是对常量使用pascalcase (Microsoft有一个名为StyleCop的工具,它可以记录所有首选的约定,并可以检查您的源代码是否符合—尽管对于许多人的口味来说,它有点太过于保留了)。如。
private const int TheAnswer = 42;
Pascal大写约定也记录在微软的框架设计指南中。
事实上,它是
private const int TheAnswer = 42;
至少如果你看一下。net库,在我看来,这是决定命名约定的最佳方式——这样你的代码看起来不会不合时宜。
从视觉上看,大写是可行的。这样很容易辨认。 为了唯一性和不留下猜测的机会,我投票给UPPER_CASE!
const int THE_ANSWER = 42;
注意:当常量在页面顶部的同一文件中使用时,大写将很有用,并且用于智能感知目的;然而,如果它们被移动到一个独立的类中,使用大写并不会有太大的区别,例如:
public static class Constant
{
public static readonly int Cons1 = 1;
public static readonly int coNs2 = 2;
public static readonly int cOns3 = 3;
public static readonly int CONS4 = 4;
}
// Call constants from anywhere
// Since the class has a unique and recognizable name, Upper Case might lose its charm
private void DoSomething(){
var getCons1 = Constant.Cons1;
var getCons2 = Constant.coNs2;
var getCons3 = Constant.cOns3;
var getCons4 = Constant.CONS4;
}