C#.NET实例variables的命名约定?
我在一个企业做了一个小实习,在他们的代码中我find了这样命名的类:
public class FlagsConfig { private static FlagsConfig _instance; }
_instance
是C#中任何types的命名约定吗?
我会问开发商,但他们今天和下个星期都在某个课程上。
也许这可以帮助你: .net命名约定和编程标准 – 最佳实践
根据这个文件,没关系。
对于私人会员来说,有很多不同的约定。 有些人喜欢前缀,有些人不(我个人不喜欢)。 有些人喜欢区分实例variables和静态variables,有些则不是:
private string m_foo; private static string s_foo;
就我个人而言,当我阅读文本时,我发现下划线阻碍了我 – 我坚信这取决于你如何阅读; 当我阅读时,我会定位,而额外的位则会影响到这一点。 对于其他人来说,这显然不是问题。 其他人发现局部variables和成员variables之间缺乏区分是一个问题 – 我通常在很明显的地方写出简短的方法。
更重要的是 – 当然,如果你正在创build一个API等等,那么公开可见的成员(包括受保护的成员和参数名称)的命名,你应该看看微软的指导方针 。
_instance是C#中任何types的命名约定吗?
首先,许多人参考了命名准则。 请注意,这些准则中的许多仅适用于某种types的公共表面区域。 像你提到的私人成员是内部的实施细节,因此受制于他们的组织的政策,不受人们期望在公共元素中看到的框架devise指南。
对于私人实施细节,在许多组织中,underbar前缀是很常见的。 我个人不认为这是必要的,但有些人似乎喜欢它。
然而重要的是, 即使对于私人执行的细节,你也不应该使用两个下划线。 C#编译器团队保留在任何未来版本的语言中使用两个下划线开始的任何词语的权利。 这是我们的“逃生孵化器”,如果我们确实需要添加一个新的非上下文保留关键字,真的不想破坏任何现有的代码。
这在C#4规范的2.4.2节中有logging。
是的,这是私人领域的通用命名标准:
http://csharpguidelines.codeplex.com/
我碰巧认同@JonSkeet,下划线是混乱的,但是AFAIK是MS标准。 他链接的文件表示在你的图书馆中不使用下划线,但我相信这是指公众成员。
更新
第一个环节实际上主张相反; 不要使用下划线。 我的错误,但它仍然是一个有用的资源。
顺从Skeet先生,我跟着他的链接进一步: http : //msdn.microsoft.com/en-us/library/ms229012.aspx这也说明你不应该使用下划线,但该指导适用于静态,受保护的和公共的成员,但不一定是私人成员。
底线 :是的,这是一个通用的标准,但在尝试寻找/使用外部标准之前,首先要使用任何内部认可的标准。
有许多指导原则和标准可供select,但如果您的工作场所使用的标准使用下划线,那么这就是您需要使用的标准。 特别是如果你只是在那里做实习,目标应该是保持一致(在业务范围内),而不是遵循“更好”(但不同)的标准。
或许向你的开发人员(或更高级的老板)询问更好的问题是,如果他们有任何文档/链接的标准,他们使用?
_name
是凌乱,混乱和非常老式。 不要这样做。
.NET 4.0一般命名约定http://msdn.microsoft.com/en-us/library/ms229045.aspx
正如你所看到的,MSDN指出
不要使用下划线,连字符或任何其他非字母数字字符
这在我的经验中是比较常见的。 为了帮助识别特定types的variables(私有,方法参数等),开发人员可以使用不同的命名条件。
例如
- variables名
- variableName(camel case)
- _variables
- variables名
我认为这种情况往往因公司而异。
我喜欢使用案例更改来区分字段和属性:
// A private field private Boolean someValue; // A public property, exposing my private field public Boolean SomeValue { get { return someValue; } set { someValue = value; } }
你的同事是否是前VB开发者? 在VB.Net中,下划线经常用于属性或类的私人成员。 由于VB不区分大小写,所以不能用大小写来区分。
Private _someValue As Boolean Protected Property SomeValue() As Boolean Get Return _someValue End Get Set(ByVal value As Boolean) _someValue = value End Set End Property
更新:另外,.NET源代码中的很多类都使用这个约定。 特别是在System.Web中 。
有两个常见的约定。
第一个是“用户下划线作为字段标记”,第二个是“使用s_用于静态字段,m_用于intng字段”
imo这是一个宗教问题,最重要的是不要混淆两种风格。
这本书包含了许多有关公约和devise准则的好主意
有很多人遵循的命名约定
myFirstVar = Camel Notation
骆驼notaion通常用于公共variables(不是私有variables)。
MyFirstVar = Pascal Notation
帕斯卡通常用于命名类和方法。
str_MyFirstVar = Hungarian Notation // if variable is of type string
匈牙利符号被认为是最古老的,但不再使用。
_myFirstVariable = used for private fields in general
根据StyleCop (Microsoft的一种风格/惯例检查工具),不应该这样做。 请参阅: http : //stylecop.soyuz5.com/SA1309.html
另外,问题可能是强调或不强调,这是一个问题