繁体   English   中英

常量的 C# 命名约定?

[英]C# naming convention for constants?

private const int THE_ANSWER = 42;

或者

private const int theAnswer = 42;

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

推荐的命名和大小写约定是对常量使用P ascal C asing (Microsoft 有一个名为StyleCop的工具,它记录了所有首选约定,并可以检查您的来源是否合规 - 尽管对许多人的口味来说它有点过于保留) . 例如

private const int TheAnswer = 42;

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

从视觉上看,大写是要走的路。 这种方式很容易辨认。 为了唯一性,不留任何猜测的机会,我投票给 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;
 }

实际上,它是

private const int TheAnswer = 42;

至少如果您查看 .NET 库,IMO 是决定命名约定的最佳方式 - 因此您的代码不会显得格格不入。

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

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

我的结论是:使用驼色外壳。 也许我也会改变我的风格;-)

编辑:

IMO,那种闻起来有匈牙利味道的东西并不是一个真正有效的论点。 问题应该始终是:它有帮助,还是有害?

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

首先,匈牙利表示法是使用前缀来显示参数的数据类型或预期用途的做法。 微软的命名约定对匈牙利符号说不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

这几乎总结了它。

Microsoft 在其文章Constants (C# Programming Guide) 中给出了以下示例:

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 类库中将其公共常量记录为fields 这里有些例子:

前两个是PascalCasing例子。 第三个似乎遵循 Microsoft 的大写约定,使用两个字母的首字母缩写词(尽管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 不提倡私有标识符的特定命名或大写约定,如问题中提供的示例所示。

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

在这个例子中,我什至省略了权威性的文章,直接使用

private const int Answer = 42;

是那个答案还是那个答案?

*严格按照帕斯卡进行编辑,但我认为这个问题是在寻求更多关于 生命、宇宙和一切的答案。

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

在诸如 Visual Studio 之类的新 IDE 中,很容易识别类型、范围以及它们是否是常量,因此不是绝对必要的。

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

我实际上倾向于在这里更喜欢 PascalCase - 但出于习惯,我对 UPPER_CASE 感到内疚......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM