Visual Studio C#常量的命名约定?

dgiusagp  于 2023-04-22  发布在  C#
关注(0)|答案(9)|浏览(112)
private const int THE_ANSWER = 42;

private const int theAnswer = 42;

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

6uxekuva

6uxekuva1#

我仍然使用大写的常量值,但这更多的是出于习惯,而不是出于任何特殊的原因。
当然,它可以让我们很容易地立即看出某个东西是常数。对我来说,问题是:我们真的需要这些信息吗?它能帮助我们避免错误吗?如果我给const赋值,编译器会告诉我我做了一些愚蠢的事情。
我的结论是:用驼色的肠衣吧。也许我也会改变我的风格;- )

编辑:

有些东西 * 闻起来 * 匈牙利不是一个真正有效的论点,国际海事组织。问题应该永远是:这是帮助,还是伤害?
匈牙利人有时候会帮忙,虽然现在不多,但仍然存在。

tyu7yeag

tyu7yeag2#

首先,匈牙利表示法是使用前缀来显示参数的数据类型或预期用途的做法。
不鼓励使用大写,如下所述:Pascal Case是可接受的约定和SCREAMING CAPS。http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming
Microsoft还在此声明,如果要匹配现有方案,则可以使用大写。http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx
这几乎总结了它。

ymzxtsji

ymzxtsji3#

在其文章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;
}

因此,对于常量,微软似乎推荐使用camelCasing。但请注意,这些常量是在本地定义的。
可以说,外部可见常量的命名更有意义。实际上,Microsoft在.NET类库中将其公共常量记录为字段。以下是一些示例:

前两个是PascalCasing的例子。第三个似乎遵循微软的Capitalization Conventions,用于两个字母的首字母缩写(尽管pi不是acryonym)。第四个似乎表明,两个字母的acryonym规则扩展到单字母首字母缩写或标识符,如E(代表数学常数e)。
此外,在其Capitalization Conventions文档中,Microsoft非常直接地指出字段标识符应通过PascalCasing命名,并给出了MessageQueue.InfiniteTimeoutUInt32.Min的以下示例:

public class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}

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

最后,据我所知,微软并不提倡为private标识符指定特定的命名或大写约定,如问题中的示例所示。

bprjcwpo

bprjcwpo4#

把匈牙利语留给匈牙利人。
在这个例子中,我甚至省略了权威性的文章,只使用

private const int Answer = 42;

这是答案还是答案?

smdncfj3

smdncfj35#

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

46qrfjad

46qrfjad6#

我相信ALL_CAPS取自C和C++的工作方式。本文here解释了风格差异是如何产生的。
在新的IDE中,例如Visual Studio,很容易识别类型,范围以及它们是否是常量,因此它不是严格必要的。
FxCop和Microsoft StyleCop软件将为您提供指导并检查您的代码,以便每个人都以相同的方式工作。

ncecgwcz

ncecgwcz7#

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

private const int TheAnswer = 42;

Pascal大小写约定也在Microsoft的Framework Design Guidelines中有文档记录。

byqmnocz

byqmnocz8#

从视觉上看,大写是要走的路。这样很容易识别。为了唯一性和不留下猜测的机会,我投大写的票!

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

3df52oht9#

事实上是的

private const int TheAnswer = 42;

至少如果你看一下.NET库,IMO是决定命名约定的最好方法--这样你的代码就不会显得格格不入。

相关问题