C#命名常量的常量?

private const int THE_ANSWER = 42; 

要么

 private const int theAnswer = 42; 

就个人而言,我认为与现代的IDE,我们应该去骆驼,因为ALL_CAPS看起来很奇怪。 你怎么看?

推荐的命名和大小写惯例是使用Pascal封套常量(Microsoft有一个名为StyleCop的工具,logging了所有的首选约定,并可以检查您的来源是否符合规范 – 虽然它对于许多人的口味来说有点过于保留)。 例如

 private const int TheAnswer = 42; 

Microsoft 框架devise指南中还logging了Pascal大小写约定

实际上是这样

 private const int TheAnswer = 42; 

至less如果你看看.NET库,哪个IMO是决定命名约定的最好方法 – 所以你的代码看起来不合适。

在视觉上,大写是要走的路。 这种方式很容易识别。 为了唯一性而没有猜测的机会,我投票赞成UPPER_CASE!

 const int THE_ANSWER = 42; 

注意 :当在页面顶部的同一文件中使用常量并用于智能感知时,大写字母将很有用; 但是,如果他们要搬到一个独立的class级,那么使用大写字母就不会有太大的区别,例如:

 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 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赋值,编译器会告诉我我做了一些愚蠢的事情。

我的结论是:和骆驼套一起去。 也许我会改变我的风格;-)

编辑:

有些东西闻起来像匈牙利语,这实际上并不是一个有效的论据。 这个问题应该永远是这样的:它有帮助还是受伤?

匈牙利有帮助的情况。 现在没有那么多,但他们依然存在。

首先,匈牙利符号是使用前缀来显示参数的数据types或预期用途的做法。 微软对匈牙利表示法的否定命名约定http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/zh-cn/library/ms229045.aspx

不鼓励使用大写,如下所述:Pascal Case是可接受的约定和SCREAMING CAPS。 http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

微软在这里也表示如果大匹配已有的scheme,可以使用UPPERCASE。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

这几乎总结了它。

匈牙利人留给匈牙利人。

在这个例子中,我甚至会把这个权威性的文章排除在外,随之而来

 private const int Answer = 42; 

这是答案还是答案?

*编辑为帕斯卡尔严格正确,但我想这个问题是寻求更多的生命,宇宙和一切的答案。

在它的文章Constants(C#编程指南)中 ,Microsoft提供了以下示例:

 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; } 

所以,对于常量来说,微软似乎推荐使用camelCasing


编辑

实际上,Microsoft将.NET类库中的公共常量logging为字段 。 这里有些例子:

  • Int32.MaxValue
  • String.Empty (实际上, static readonly
  • Math.PI
  • Math.E

前两个是PascalCasing的例子。 第三个似乎遵循微软的大写公约的双字母缩写(尽pipe丕不是丙烯酸酯)。 而第四个似乎表明,双字母丙烯酸酯的规则延伸到单个字母缩写或标识符,如E

此外,在其大写公约文档中,Microsoft非常直接地声明Field标识符应该通过PascalCasing命名,并给出以下MessageQueue.InfiniteTimeout和UInt32.Min的示例:

 public class MessageQueue { public static readonly TimeSpan InfiniteTimeout; } public struct UInt32 { public const Min = 0; } 

结论:使用PascalCasing作为公共常量 (被logging为conststatic readonly字段)。

(最后,据我所知,微软并不提倡私有标识符的具体命名或大小写惯例。)

我实际上倾向于喜欢PascalCase这里 – 但出于习惯,我犯了UPPER_CASE …

ALL_CAPS取自C和C ++的工作方式,我相信。 这篇文章解释了风格差异是如何产生的。

在Visual Studio这样的新IDE中,很容易识别types,范围以及它们是否是常量,因此不是必须的。

FxCop和Microsoft StyleCop软件将帮助您提供指导方针并检查您的代码,因此每个人的工作方式都是一样的。