常量的 C # 变数命名原则?

private const int THE_ANSWER = 42;

或者

private const int theAnswer = 42;

我个人认为使用现代 IDE 时,我们应该使用 camelCase,因为 ALL _ CAPS 看起来很奇怪?

294547 次浏览

把匈牙利语留给匈牙利人吧。

在这个例子中,我甚至会省略最终文章,直接使用

private const int Answer = 42;

这就是答案,还是这就是答案?

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

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

在Visual Studio等新的IDE中,很容易识别类型、范围以及它们是否恒定,因此这不是严格必要的。

FxCop和Microsoft StyleCop软件将帮助您提供指导方针并检查您的代码,以便每个人都以相同的方式工作。

对于const值,我仍然使用大写,但这更多是出于习惯,而不是任何特定的原因。

当然,这使我们很容易立即看出某个对象是const。我的问题是:我们真的需要这些信息吗?它能帮助我们避免错误吗?如果我给const赋值,编译器会告诉我我做了一些愚蠢的事情。

我的结论是:选择驼色的。也许我也会改变我的风格;-)

编辑:

在我看来,那个匈牙利语气味并不是一个有效的论点。问题应该始终是:它是有益的,还是有害的?

在某些情况下,匈牙利语会有所帮助。现在已经不多了,但仍然存在。

事实上,它是

private const int TheAnswer = 42;

至少如果你看一下。net库,在我看来,这是决定命名约定的最佳方式——这样你的代码看起来不会不合时宜。

推荐的命名和大写约定是对常量使用< >强P < / >强ascal C <强> < / >强利用(微软有一个名为StyleCop的工具,它记录了所有首选约定,并可以检查您的源代码是否符合-尽管对于许多人的口味来说,它有点的保留性)。如。

private const int TheAnswer = 42;

Pascal大写约定也记录在Microsoft的框架设计指引中。

我实际上倾向于在这里使用PascalCase -但出于习惯,我对UPPER_CASE感到内疚…

首先,匈牙利符号是使用前缀来显示参数的数据类型或预期用途的实践。 微软的命名惯例对匈牙利符号说不 http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx < / p >

不鼓励使用大写字母: Pascal Case是可接受的惯例和尖叫帽。 http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming < / p > 微软还在这里声明,如果要匹配现有的方案,则可以使用UPPERCASE。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx < / p >

这差不多就是总结了。

在文章常量(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;
}

因此,对于常量,微软推荐使用camelCasing。但请注意,这些常量是在本地定义的。

可以说,外部可见常数的命名更令人感兴趣。实际上,微软在。net类库中将其公共常量记录为字段。下面是一些例子:

前两个是PascalCasing的例子。第三个似乎是继微软的资本化的约定之后的一个两个字母的首字母缩写词(尽管π不是一个丙烯词)。第四个似乎表明,两个字母的丙烯词规则扩展到一个单字母的首字母缩略词或标识符,如E(它代表数学常数e < em > < / em >)。

此外,在其大写约定文档中,微软非常直接地指出字段标识符应该通过PascalCasing命名,并给出了以下MessageQueue。InfiniteTimeoutUInt32。最小值的示例:

public class MessageQueue
{
public static readonly TimeSpan InfiniteTimeout;
}


public struct UInt32
{
public const Min = 0;
}

结论:对公共常量使用PascalCasing(被记录为conststatic readonly字段)。

最后,据我所知,微软不提倡对私人标识符进行特定的命名或大写约定,如问题中给出的示例所示。

从视觉上看,大写是正确的。这样很容易辨认。 为了唯一性和不留下猜测的机会,我投票给UPPER_CASE!< / p >

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