常量的C#命名约定?

时间:2008-10-28 08:16:45

标签: c# naming-conventions const

private const int THE_ANSWER = 42;

private const int theAnswer = 42;

我个人认为在现代IDE中我们应该使用camelCase,因为ALL_CAPS看起来很奇怪。你觉得怎么样?

9 个答案:

答案 0 :(得分:427)

推荐的命名和大小写约定是使用Pascal大小写来表示常量(Microsoft有一个名为StyleCop的工具,它记录了所有首选约定,并且可以检查您的合规性来源 - 尽管它有点 对很多人的口味都有保留作用)。 e.g。

private const int TheAnswer = 42;

Pascal大小写惯例也记录在Microsoft的Framework Design Guidelines

答案 1 :(得分:65)

实际上,它是

private const int TheAnswer = 42;

至少如果您查看.NET库,哪种IMO是决定命名约定的最佳方式 - 那么您的代码看起来并不合适。

答案 2 :(得分:48)

视觉上,大写是最佳选择。它是如此可识别的方式。 为了独特而没有机会猜测,我投票支持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 might lose its charm
private void DoSomething(){
var getCons1 = Constant.Cons1;
var getCons2 = Constant.coNs2;
var getCons3 = Constant.cOns3;
var getCons4 = Constant.CONS4;
 }

答案 3 :(得分:22)

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

当然,它很容易立即看到某些东西是常量。我的问题是:我们真的需要这些信息吗?它能以任何方式帮助我们避免错误吗?如果我为const赋值,编译器会告诉我我做了一些愚蠢的事。

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

修改

那些闻到匈牙利语的东西并不是真正有效的论据,IMO。问题应该始终是:它有帮助,还是有害?

有些情况下匈牙利人有帮助。现在不是很多,但它们仍然存在。

答案 4 :(得分:15)

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

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

Microsoft在此还声明,如果完成匹配现有方案,则可以使用UPPERCASE。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

这几乎总结了一下。

答案 5 :(得分:12)

将匈牙利人留给匈牙利人。

在这个例子中,我甚至遗漏了权威性的文章,然后选择

private const int Answer = 42;

答案是答案还是答案?

*编辑为Pascal严格正确,但我认为问题是寻求更多life, the universe and everything的答案。

答案 6 :(得分:10)

在其文章Constants (C# Programming Guide)中,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;
}

因此,对于常量,出现,Microsoft建议使用camelCasing。但请注意,这些常量定义为本地

可以说,外部可见常数的命名更受关注。实际上,Microsoft将.NET类库中的公共常量记录为字段。以下是一些例子:

前两个是PascalCasing的例子。第三个似乎跟随微软的Capitalization Conventions获得两个字母的缩写(尽管pi不是丙烯酸酯)。第四个似乎表明,双字母丙烯酸的规则扩展为单个字母的首字母缩写或标识符,例如E(代表数学常量e)。

此外,在其资本化公约文档中,Microsoft非常直接地声明字段标识符应通过PascalCasing命名,并为MessageQueue.InfiniteTimeoutUInt32.Min提供以下示例:

public class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}

结论:将PascalCasing用于公共常量(记录为conststatic readonly字段)。

最后,据我所知,Microsoft并未提倡针对私有标识符的特定命名或大写约定,如问题中提供的示例所示。

答案 7 :(得分:6)

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

在新的IDE(例如Visual Studio)中,很容易识别类型,范围以及它们是否保持不变,因此并非绝对必要。

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

答案 8 :(得分:6)

我实际上倾向于选择PascalCase - 但出于习惯,我犯了UPPER_CASE ......