Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言命名指南#_C#_.net_Naming Conventions_Hungarian Notation - Fatal编程技术网

C# 用C语言命名指南#

C# 用C语言命名指南#,c#,.net,naming-conventions,hungarian-notation,C#,.net,Naming Conventions,Hungarian Notation,我有这门课: class DoSomething { private int timesDone; ... } 命名变量“timesDone”的正确方法是什么 有时我看到命名为m_timesDone。这是正确的吗?在哪里可以找到有关命名准则的信息 谢谢大家! 您可以直接在MSDN网站上找到一些信息: 没有通用的正确方法。选择一个你喜欢的命名惯例,并坚持下去。很多人都会按照你的意愿行事。然后,您可以将其引用为 this.timesDone = someInt 但是,我不喜欢这样

我有这门课:

class DoSomething
{
    private int timesDone;
    ...
}
命名变量“timesDone”的正确方法是什么

有时我看到命名为m_timesDone。这是正确的吗?在哪里可以找到有关命名准则的信息


谢谢大家!

您可以直接在MSDN网站上找到一些信息:
没有通用的正确方法。选择一个你喜欢的命名惯例,并坚持下去。

很多人都会按照你的意愿行事。然后,您可以将其引用为

this.timesDone = someInt

但是,我不喜欢这样,因为我不喜欢键入“this”以避免与方法参数名称冲突。只要代码可读且一致,您就可以了。

根据MS标准,您的代码是可以的。当您使用高级IDE时,将前缀设为m_2;并不是真正必要的。然而,像\uu这样的短前缀可以用来利用自动完成功能来快速分类类成员


我建议您购买一本“”书,以了解有关MS标准的更多信息

绝对不要使用m_timesDone

简单地说就是“private int timestone”


<>你可以通过阅读一些好的书,比如代码完整来学习如何命名变量。

< P> My的预置成员字段的约定来自于C++的早期,当时很流行。这不是一个C#约定,而且由于大多数C#代码都是使用最新的Visual Studio编写的,因此它添加了视觉噪音,没有任何相应的优势,因为您可以很容易地看到变量的范围。不要使用mum


匈牙利符号进入C#的唯一一个例子是在接口类名前面加上I,比如IDisposable

您将发现的唯一一致点是,它不应该是TimesDown,而应该以小写字母开头。

在旧的出版物(MS、MSDN)中,不鼓励使用前导下划线。稍后它将返回,特别是对于属性的备份字段:_timesDown。

通常采用的策略是:

对于方法帕斯卡套管

e、 g

e、 g

对于变量驼峰式外壳例如TimeDown

局部变量:

全局变量:


我希望这可以帮助您:)

当然,它们似乎没有为私有实例变量指定大小写约定:)m_u或u或任何必要的东西如果您不想在每个变量前面加上“this”@EdSwangren,那么当您必须使用“this.”构造时,这是非常不寻常的情况。如果您使用的是描述性名称,您会发现唯一需要它(但不是必需的)的地方是constructorYep-MS没有专用字段的指导原则。我们使用下划线。一定要获得框架设计指南——注意,还有第二版:我现在正在读这本书,它说除了使用驼峰符号的参数之外,所有标识符都使用Pascal符号。我没有看到任何关于私有字段的内容。@aku,另外,StyleCop建议在任何适用的地方都使用它作为限定符。如果能够立即确定某个对象的作用域是类,而不是单个方法,那么它确实在这方面有所帮助。虽然塞德罗向你指出的指导方针不鼓励公众成员使用更具风格的观点,而不是任何具体的观点。我认为官方的指导方针没有提到任何私人领域。我通常只对私有字段使用
timesDone
,对公开属性使用
timesDone
。在构造函数中设置字段时,我调用参数
timesDone
,并将该字段称为
this.timesDone
。我发现字段的
\u timesDone
、参数的
timesDone
和属性的
timesDone
也是可以接受的组合。但这只是我的观点。你应该自己组织。:)注意:这些适用于公共/受保护成员和公共非成员类。对私人会员没有指导。+1-谢谢!我因为敢说你大部分时间都不需要“this”而被另一个帖子狠狠揍了一顿。很多人也习惯用t开头类型参数,这有点匈牙利风格。@Eric,你认为这是应该避免的吗?这不是MS在BCL中也做的吗?呃…为什么不?听起来有点教条,-1这违反了编码准则。这不是C#的书写方式。就像你不会用小写字母开头一样。这是个人/公司的偏好,真的。私有字段与公共API无关,因此使用(或不使用它们)不会违反.NET标准IMO.AFAIK指南没有提到任何私有内容。我个人更喜欢
\u privateField
,因为这样我就可以将ctor参数命名为
privateField
,您可以立即看到局部变量和实例字段之间的差异。或者,更好的是,根据您整个团队的喜好使用一个。标准应该是一种合作的努力,而不是一个人听写——除非你是团队中唯一的人,我完全同意。此外,你还应该四处寻找好习惯的例子,这样你就不必犯一些愚蠢的错误。
public class Program
 {
 }
public void DoSomething() { } 
   aTimesDown
myTimesDown