常量的C#命名约定?

拈花ヽ惹草 提交于 2020-02-25 23:22:21
private const int THE_ANSWER = 42;

要么

private const int theAnswer = 42;

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


#1楼

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 。 这里有些例子:

前两个是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并不主张针对专用标识符的特定命名或大写约定,如问题所呈现的示例所示。


#2楼

在外观上,大写字母是必经之路。 这样就很容易辨认了。 为了唯一,并且没有猜测的机会,我投票支持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;
 }

#3楼

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

在这个例子中,我什至省去了权威文章,而只是

private const int Answer = 42;

那是答案还是那答案?

*严格按照Pascal的观点进行编辑,但是我想这个问题正在寻求更多关于生命,宇宙和万物的答案。


#4楼

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

在新的IDE(例如Visual Studio)中,很容易识别类型,范围以及它们是否为常量,因此并不是必须的。

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


#5楼

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

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

我的结论是:穿上骆驼衣。 也许我也会改变自己的风格;-)

编辑:

国际海事组织(IMO)认为闻到匈牙利味的东西并不是一个有效的论点。 问题应该始终是:它有帮助还是有伤?

在某些情况下,匈牙利会提供帮助。 如今并不多,但它们仍然存在。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!