常用缩略语的命名约定

时间:2015-12-09 14:23:16

标签: c# naming-conventions stylecop acronym

根据StyleCop为常量命名约定是Pascal。

例如

private const double InchToMm= 2.54;

首字母缩略词的命名约定怎么样?

private const int Dpi = 96;

private const int DPI = 96;

3 个答案:

答案 0 :(得分:3)

微软的Framework Design Guidelines说:

  

PascalCasing约定,用于除参数之外的所有标识符   名称,大写每个单词的第一个字符(包括   长度为两个字母的首字母缩略词),如下所示   示例:

     

PropertyDescriptor

     

HtmlTag

     

一个特殊情况是两个字母的首字母缩略词,其中两个字母   大写,如以下标识符所示:

     

IOStream

     

camelCasing约定,仅用于参数名称,大写   每个单词的第一个字符,除了第一个单词,如图所示   以下示例。如例子也显示,两个字母   开始使用驼峰标识符的首字母缩略词都是小写的:

     

propertyDescriptor

     

ioStream

     

htmlTag

但是,这些是指导方针和惯例,而不是法律。如果你想采取另一种约定,只需使用它。但总是永远不要混淆。

答案 1 :(得分:2)

如果你走自己的路,这有点主观,但希望理由不是。如果一致性是您的主要风格目标,我发现团队一致始终的最简单UpperCamelCase标准是Dpi。我并不是说这是我最喜欢的或最可读的或类似的东西。

我说这是一个最简单的标准,可以始终如一地应用于不同的人群,甚至可以在您使用此约定的多年中自行应用。原因在于它相当机器人并且几乎不需要考虑。这样做的方法是问自己如何用下划线约定来写这个。你会这样写吗?

d_p_i

...如果是这样,您将由下划线分隔的每组字符中的第一个转换为大写字母。这会产生DPI。但可能几乎每个人都会在下划线约定中这样写:

dpi

...所以从下划线到UpperCamelCase的机器人,明确的翻译变为Dpi。如果我们有这样的事情:

renderer_gl

...来自下划线的机器人,明确的翻译将是RendererGl

现在,这并不一定与人类阅读和写作的方式相当或最接近。只是这样,只要您能够决定如何在下划线中编写标识符(大多数人都会这样做),即使是机器人也可以将其转换为UpperCamelCaselowerCamelCase而不会有任何歧义

因此,如果团队中的强烈审美是一致的,并且有一个惯例,两个不同的人不愿意使用不同的外壳,这可能是实现它的最简单方法。在我们的案例中,一致性是我们提供软件开发工具包的首要目标,我们并不希望我们的API不一致。为此,它有助于建立一种选择如何使用CamelCase的简单方法,这种方式不需要经过深思熟虑或涉及任何形式的歧义。

对于其他惯例,您经常会发现许多缩写/首字母缩略词的特殊情况。 "如果它是一个常见的首字母缩略词,请将其视为一个单词。如果不是,请将其视为首字母缩略词(全部大写)。如果长度为2个字母,请将其视为首字母缩略词。如果长度超过3个字母,请将其视为一个单词。如果最后有一个L或M,则将其视为单词,否则为首字母缩略词,除非它后跟数字或前面有专有名词。如果它看起来并不好看,那么就这样做。" 大脑可以在这里发挥作用,团队可能会一直难以应用这些标准。

当然,一致性可能不是你最强的目标,但如果是,我会建议这个约定。

答案 2 :(得分:1)

我可以在常量上找到的唯一StyleCop规则是SA1303。它声明:

  

常量C#字段的名称必须以大写字母开头。

因此,DpiDPI符合该规则。

Microsoft says你应该Pascal案吧。在我看来,常量应该都是大写的,所以我会选择DPI。 Microsoft在名称空间名称中使用Xml,也应该使用Pascal,因此Dpi最符合微软自己使用的命名约定。