private const int THE_ANSWER = 42;
要么
private const int theAnswer = 42;
我个人认为,对于现代IDE,我们应该使用camelCase,因为ALL_CAPS看起来很奇怪。你怎么看?
theAnswer。以前曾经是匈牙利符号迷,但自从我学会了不使用它以来,我一直喜欢严格避免在命名中使用任何元符号。类似的接口也是如此IInterface。我更喜欢Interfacable。但是在团队中工作时,我必须遵守规则:(
private const int THE_ANSWER = 42;
要么
private const int theAnswer = 42;
我个人认为,对于现代IDE,我们应该使用camelCase,因为ALL_CAPS看起来很奇怪。你怎么看?
theAnswer。以前曾经是匈牙利符号迷,但自从我学会了不使用它以来,我一直喜欢严格避免在命名中使用任何元符号。类似的接口也是如此IInterface。我更喜欢Interfacable。但是在团队中工作时,我必须遵守规则:(
Answers:
推荐的命名和大小写约定使用P ASCAL Ç ASING常量(微软有一个名为工具了StyleCop该文档中的所有最佳惯例,并可以检查您的来源为合规性-尽管这是一个有点太肛门保持了很多人的口味) 。例如
private const int TheAnswer = 42;
Microsoft的《框架设计指南》中也记录了Pascal大写约定。
在外观上,大写字母是必经之路。这样就很容易辨认了。为了唯一,并且没有猜测的机会,我投票支持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;
}
对于const值,我仍然使用大写字母,但这比出于任何特定原因更不习惯。
当然,可以很容易地立即看到某些东西是常量。我的问题是:我们真的需要这些信息吗?它对我们避免错误有任何帮助吗?如果我给const赋值,编译器会告诉我我做了一些愚蠢的事情。
我的结论是:穿上骆驼衣。也许我也会改变自己的风格;-)
编辑:
国际海事组织(IMO)认为闻到匈牙利味的东西并不是一个有效的论点。问题应该始终是:它有帮助还是有伤?
在某些情况下,匈牙利会提供帮助。如今并不多,但它们仍然存在。
首先,匈牙利表示法是使用前缀显示参数的数据类型或预期用途的一种做法。Microsoft的命名约定对匈牙利表示法 http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx
如此处所述,不鼓励使用大写字母:Pascal Case是可以接受的约定,并且会增加CAPS。 http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming
Microsoft在此还声明,如果完成大写以匹配现有方案,则可以使用大写。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx
这几乎可以总结一下。
Microsoft 在其文章Constants(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;
}
因此,对于常量,似乎 Microsoft建议使用camelCasing。但是请注意,这些常量是在本地定义的。
可以说,外部可见常量的命名引起了更大的兴趣。实际上,Microsoft 在.NET类库中将其公共常量记录为field。这里有些例子:
static readonly)前两个是的示例PascalCasing。第三个似乎遵循Microsoft的大写约定,使用两个字母的首字母缩写词(尽管pi不是缩写词)。第四点似乎表明,两个字母的缩写的规则扩展到单个字母的缩写或标识符,例如E(代表数学常数e)。
此外,Microsoft在其《大写约定》文档中非常直接地指出,字段标识符应通过命名,PascalCasing并为MessageQueue.InfiniteTimeout和UInt32.Min提供以下示例:
public class MessageQueue
{
public static readonly TimeSpan InfiniteTimeout;
}
public struct UInt32
{
public const Min = 0;
}
结论:PascalCasing用于公共常量(记录为const或static readonly字段)。
最后,据我所知,Microsoft不主张针对专用标识符使用特定的命名或大写约定,如问题所显示的示例所示。
将匈牙利人留给匈牙利人。
在这个例子中,我什至省去了权威性的文章,而是
private const int Answer = 42;
那是答案还是那答案?
*严格按照Pascal的观点进行编辑,但是我想这个问题正在寻求更多关于生命,宇宙和万物的答案。
The如果可以的话,我会两次投票赞成删除。:-)
我实际上倾向于在这里偏爱PascalCase-但出于习惯,我对UPPER_CASE感到内......