7

1) 声明变量的策略是什么?您应该始终使用关键字private,还是可以跳过它?

string MyVar1;

对比

private string MyVar1;

我看到的唯一原因是微软有一天可以将默认访问修饰符更改为public而不是private.

它在哪里说私有是可选的?对MSDN的任何引用?

2) 常量的命名策略?

我在写常量时一直使用大写字母,但是有朋友告诉我这违反了微软的命名政策,是吗?

const string MYVAR1;

对比

const string myVar1;

3)帕斯卡还是骆驼?

我个人认为骆驼看起来很丑。

4

15 回答 15

22

1)private关键字是可选的。我非常怀疑微软是否会改变字段的默认可见性,因为这将是一个巨大的、突破性的改变(更不用说一个愚蠢的改变了)。省略private关键字只是个人喜好问题。

2) 不要使用“shouty”常量——遵循框架的约定并使用帕斯卡大小写(例如ThisIsAConstant优于 THIS_IS_A_CONSTANT)。

于 2009-08-05T14:05:47.490 回答
13

您可能对 Microsoft 的类库开发人员设计指南感兴趣

于 2009-08-05T14:10:21.883 回答
5

不直接回答您的问题,但也许您会对 Microsoft 的StyleCop感兴趣。这是一个根据样式和一致性规则分析源代码的工具。默认情况下,它采用 Microsoft 的样式指南。

于 2009-08-05T14:27:55.993 回答
2

根据 MS 指南命名 const 的官方建议是:

  • 使用一个或两个字符的名称全部大写,即 System.Math.PI、System.Math.E
  • 对于等于或超过 3 个字符的任何内容,请使用 PascalCasing
于 2010-09-17T15:57:04.077 回答
1

private 是可选的,但需要额外输入。我喜欢跳过它。

至于常量,这取决于您的喜好以及与谁一起工作。但如有疑问,请查看 .NET Framework 以及它们如何命名常量。

于 2009-08-05T14:08:59.870 回答
1

私有字段名称也应该是驼峰式的,可选带前缀 _ 或 m_ :

    私人整数计数;
或者
    私有字符串_name;
或者
    私人小数 m_price;
于 2009-08-05T14:09:38.000 回答
1

我怀疑微软是否会改变 C# 成员变量的默认行为。我会声明你想要私有的东西,并明确声明你想要公开的东西,只是为了清楚起见,如果没有别的。

我认为常量的重要规则是只使用每个人都同意的命名约定,并且您可以将其识别为常量。如果每个人都喜欢全部大写,那么就使用它。如果你想更标准,尽管使用 Pascal 大小写。

于 2009-08-05T14:09:52.443 回答
1

private是可选的,所以你可以跳过它。

但是,如果您的类混合了私有、受保护和公共数据成员,那么为了便于阅读,最好指定一个成员是私有的。

于 2009-08-05T14:17:42.857 回答
1

就个人而言,如果常量是 ALL_CAPS 就像在其他一些语言中一样,我会喜欢它......我认为这是一种快速简便的发现常量的方法。尽管如此,由于框架 UsePascalCasing 中内置了其他常量,因此您也应该这样做。一致性非常重要。

至于“Pascal vs. Camel”,你遇到了同样的问题。如果你只是自己编程,从头开始,你可以做任何你想做的事情。但是由于您使用的是预先存在的框架,为了保持一致性,您应该模仿相同的风格。此外,一旦习惯了它,您可能会发现遵循相同的规则集实际上会有所帮助,因为您会立即知道某些东西是参数或局部变量(camelCasing)与属性或常量(PascalCasing) .

于 2009-08-05T14:31:21.747 回答
1

请在字段名称中使用 Pascal 大小写。

来自.NET Framework 开发人员指南 类型成员的名称

对所有由多个单词组成的公共成员、类型和命名空间名称使用 Pascal 大小写。

请注意,此规则不适用于实例字段。出于成员设计指南中详述的原因,您不应使用公共实例字段。

来自.NET Framework 开发人员指南 大写约定

请注意常量命名中 Pascal 大小写的隐含标准。

对永远不会改变的常量使用常量字段。

编译器将 const 字段的值直接烧录到调用代码中。因此,永远不能更改 const 值,而不会冒破坏兼容性的风险。

public struct Int32 {
  public const int MaxValue = 0x7fffffff;
  public const int MinValue = unchecked((int)0x80000000);
}

来自框架设计指南:可重用 .NET 库的约定、惯用语和模式,第二版第 161 页

我找不到任何关于您是否应该使用术语私有来装饰私有字段的参考。我认为这更像是一种内部风格选择。无论您选择哪个,您都希望保持一致。

于 2009-08-05T14:56:10.207 回答
0

在 C# 中,可见性默认为尽可能有限的可见性。没有修饰符:

  • 非内部类是内部的
  • 内部类是私有的
  • 类成员是私有的

因为无论如何尽可能地限制可见性是个好主意,所以我尝试总是在我只需要默认可见性的地方保留修饰符。这使得那些不是默认的成员更加明显,这有助于让我注意他们是否真的需要那么明显。

对于常量,我的偏好是将它们放在自己的类中,这样 ClassName.ConstantName 格式就可以清楚地看出它们是什么。

一般来说,我遵循 Microsoft 的类库开发设计指南

于 2009-12-03T23:06:16.877 回答
0

1)我倾向于使用私人,只是为了明确,但我猜真的没有必要

2) 确实,Microsoft 不建议对常量使用大写字母。

微软对类型成员的命名约定 gyuidelines 可以在这里找到

于 2009-08-05T14:10:04.237 回答
0

这是一本带有 C# 和 VB .net 编码指南的免费电子书,非常好

电子书下载链接

不过就个人而言,我喜欢明确指定什么时候是私有的,为了可读性,事实上我已经习惯了这样做,以至于当我看不到它时我会感到困惑。至于常量,我使用 PascalCasing。

于 2009-08-05T14:20:34.443 回答
0

您可能还对Microsoft 自己的 .NET Framework内部编码指南感兴趣,正如Brad Abrams 在他的博客中所揭示的那样

遵循内部和外部成员的所有 .NET Framework 设计指南。其中的亮点包括:

  • 不要使用匈牙利符号
  • 不要为成员变量(、 m、 s_ 等)使用前缀。如果你想区分
  • 在局部变量和成员变量之间,您应该使用“this”。在 C# 和“我”中。在 VB.NET 中。
  • 对成员变量使用 camelCasing
  • 使用 camelCasing 作为参数
  • 对局部变量使用 camelCasing
  • 对函数、属性、事件和类名使用 PascalCasing
  • 使用“I”为接口名称添加前缀
  • 不要在枚举、类或委托前加上任何字母
于 2009-08-05T15:13:21.740 回答
0

@Dan Diplo # 不要为成员变量(、m、s_ 等)使用前缀。如果你想区分 # 局部变量和成员变量,你应该使用“this”。在 C# 和“我”中。在 VB.NET 中。

这是很有争议的。前缀有助于智能感知:您放置前缀 char 并仅获取本地私有实例字段的列表。有了这个。您将获得一个完整的列表,其中包括方法、字段、属性、事件等。

还要考虑以下示例:

private int _count; 
private int total; 
private decimal price; 

public MyClass(int count, int total, decimal price) 
{ 
    _count = count;     // correct 
    this.total = total; // correct 
    price = price;      // wrong! you forgot this. qualifier 
} 
于 2009-08-05T16:57:28.777 回答