C#.NET实例变量命名约定?

Sho*_*oot 35 .net c# naming naming-conventions

我正在做一个小型的企业实习,在他们的代码中我找到了这样命名的类:

public class FlagsConfig
{
    private static FlagsConfig _instance; 
}
Run Code Online (Sandbox Code Playgroud)

_instanceC#中的任何类型的命名约定?

我会询问开发人员,但他们今天和下周都在一些课程上.

Man*_*anu 35

也许这可以帮助您:.net命名约定和编程标准 - 最佳实践

根据这份文件,没关系.

  • 值得注意的是,您可以在互联网上找到*some*文件,主张您想要使用的任何样式......没有迹象表明任何特定文档的广泛关注程度. (18认同)
  • 对于它的价值,我曾经反对整个下划线的事情.我认为小写和大写只是区分属性和变量.直到我继续运行construtor参数并且您想将该参数分配给私有字段.私人物品; public Ctor(object something){this.something = something;}`.正如您所看到的,它确实有效,但您必须每次都指定`this`关键字.对于私有字段使用`_something`表示法更有意义. (4认同)

Jon*_*eet 26

对于私人会员,有许多不同的约定.有些人喜欢前缀,有些人不喜欢(我个人不喜欢).有些人喜欢区分实例变量和静态变量,有些则不喜欢:

private string m_foo;
private static string s_foo;
Run Code Online (Sandbox Code Playgroud)

我个人觉得下划线时,我正在读文本的方式获得-我坚信这取决于如何你阅读; 当我阅读时,我会进行subvocalize,而额外的位则妨碍了这一点.对于其他人来说,这显然不是问题.其他人发现局部变量和成员变量之间缺乏区别是一个问题 - 我通常会编写简短的方法,而这显然是什么.

更重要的是 - 当然,如果您正在创建API等,则是公开可见成员(包括受保护成员和参数名称)的命名,此时您应该查看Microsoft准则.


Eri*_*ert 21

_instance是C#中任何类型的命名约定吗?

首先,许多人引用了命名准则.请注意,其中许多指南仅适用于某种类型的公共表面区域.像你提到的私人成员是内部实施细节,因此受制于制作它们的组织的政策的约束,不受人们期望在公共元素中看到的框架设计指南的约束.

对于私有实现细节,底栏前缀在许多组织中很常见.我个人认为没有必要,但有些人似乎喜欢它.

但重要的是,即使对于私有实现细节,您也不应该使用两个下划线. C#编译器团队保留以两个下划线开头的任何单词的权利,以具有我们在该语言的某个未来版本中选择的任何含义.这是我们的"逃生舱",万一我们确实需要添加一个新的非上下文保留关键字,真的,真的不想破坏任何现有的代码.

这在C#4规范的2.4.2节中有记录.


Joh*_*don 13

是的,这是私有字段的通用命名标准:

http://csharpguidelines.codeplex.com/

我碰巧同意@JonSkeet认为下划线很乱,但AFAIK是MS的标准.他链接的文件表明你的图书馆没有使用下划线,但我认为这是指公众成员.

更新

第一个环节实际上提倡相反的; 不要使用下划线.我的错,但它仍然是一个有用的资源.

为了尊重Skeet先生,我进一步关注他的链接:http://msdn.microsoft.com/en-us/library/ms229012.aspx,它还声明你不应该使用下划线,但该指导适用于静态,受保护的和公共成员,但不一定是私人成员.

底线:是的,它是一种通用标准,但在尝试查找/使用外部标准之前,首先使用任何内部商定的标准.

  • 那个编码标准实际上是不是说不为私有字段使用下划线?虽然正如其他人所说的那样,首先要看你的团队编码标准:-) (2认同)

Mii*_* L. 8

有许多指南和标准可供选择,但如果您工作场所使用的标准使用下划线,那么您需要使用它.特别是如果你只是在那里实习,目标应该是保持一致(在那个行业内),而不是遵循一些"更好"(但不同)的标准.

或许问问你的开发人员(或更高级别的老板)的更好问题是他们是否有关于他们使用的标准的任何文档/链接?