代码之家  ›  专栏  ›  技术社区  ›  mmiika

常数的命名约定?

  •  355
  • mmiika  · 技术社区  · 16 年前
    private const int THE_ANSWER = 42;
    

    private const int theAnswer = 42;
    

    就我个人而言,我认为现代的IDES应该和驼色盒子搭配,因为所有的帽子看起来都很奇怪。你怎么认为?

    9 回复  |  直到 6 年前
        1
  •  419
  •   Lauren Van Sloun Sebastian Inones    6 年前

    建议的命名和大小写约定是对常量使用pascal大小写(Microsoft有一个名为 StyleCop 它记录了所有的首选约定,并且可以检查您的源代码是否符合要求,尽管它有一点。 对许多人的口味有保留作用)。例如

    private const int TheAnswer = 42;
    

    帕斯卡资本化惯例也记录在微软的 Framework Design Guidelines .

        2
  •  63
  •   bh213    16 年前

    事实上,它是

    private const int TheAnswer = 42;
    

    至少如果你看一下.NET库,哪个IMO是决定命名约定的最好方法——这样你的代码就不会看起来不合适了。

        3
  •  46
  •   Fireboyd78 usefulBee    7 年前

    从视觉上看,大写是前进的道路。这样就很容易辨认。 为了独特和没有机会猜测,我投赞成票!

    const int THE_ANSWER = 42;
    

    注释 :当常量要在页面顶部的同一个文件中使用并用于IntelliSense时,大写将非常有用;但是,如果要将它们移动到独立类中,使用大写不会有太大的区别,例如:

    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;
     }
    
        4
  •  22
  •   Treb    16 年前

    我仍然使用大写的常量值,但这比任何特定原因都更不习惯。

    当然,这很容易立刻看出什么东西是警察。我的问题是:我们真的需要这些信息吗?它有助于我们避免错误吗?如果我给常量赋值,编译器会告诉我我做了一些愚蠢的事情。

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

    编辑:

    那东西 气味 在我看来,匈牙利语不是一个真正有效的论点。问题应该永远是:它有帮助吗,还是有伤害?

    有些情况下匈牙利人会帮忙。现在不是那么多,但它们仍然存在。

        5
  •  15
  •   user31939    16 年前

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

    此处不鼓励使用大写: 帕斯卡案件是可以接受的惯例和尖叫帽。 http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

    微软在此还声明,如果要匹配现有的方案,可以使用大写。 http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

    这很简单。

        6
  •  12
  •   Peter Mortensen icecrime    15 年前

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

    在这个例子中,我甚至会省略最后一篇文章,然后继续

    private const int Answer = 42;
    

    这是答案还是答案?

    *使编辑完全正确,但我认为问题是寻求更多的答案 life, the universe and everything .

        7
  •  10
  •   DavidRR Chris Brandsma    7 年前

    在其文章中 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 . 但是请注意,这些常量是定义的 局部地 .

    可以说,外部可见常量的命名更受关注。实际上,微软将其 公共常量 在.NET类库中作为 领域 . 以下是一些例子:

    前两个是 PascalCasing . 第三个是微软的 Capitalization Conventions 两个字母的缩写(尽管 pi 不是Acryym)。第四个似乎暗示了两个字母Acryym的规则扩展到一个字母的首字母缩写或标识符,例如 E (表示数学常数 e )

    此外,在其大写约定文档中,Microsoft非常直接地声明字段标识符应通过 密码器 并举例说明 MessageQueue.InfiniteTimeout UInt32.Min :

    public class MessageQueue
    {
        public static readonly TimeSpan InfiniteTimeout;
    }
    
    public struct UInt32
    {
        public const Min = 0;
    }
    

    结论:使用 密码器 对于公共常量 (记录为 const 静态只读 字段)。

    最后,据我所知,微软不提倡对 私有的 如问题中的示例所示的标识符。

        8
  •  6
  •   Marc Gravell    16 年前

    实际上我更喜欢帕斯卡酶-但出于习惯,我犯了上个案子…

        9
  •  6
  •   Peter Mortensen icecrime    15 年前

    我相信从C和C++的工作方式来看ALLICAP。本文 here 解释了风格差异是如何产生的。

    在新的IDE(如Visual Studio)中,很容易识别类型、范围以及它们是否是常量,因此没有严格的必要。

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