什么是int,string,array,list,object等可接受的命名约定

RJ.*_*RJ. 9 .net c# programming-languages

我现在工作的公司为它们的C#变量使用一组命名约定,例如iSomeName用于int,sSomeName用于字符串,aSomeName用于数组,bSomeName用于布尔值,dSomeName用于datetime等等.我以前的雇主没有使用i,s,a,b和d前缀,只是将变量命名为一个很好理解的名称.我的印象是,这些前缀在不久前失宠了,从我读到的不是当前的趋势.对我来说似乎很好,只要变量具有足够的描述性来理解它正在做什么,但我想知道现在一天接受的做法是命名变量?

Mar*_*rth 7

好了,有很多命名取决于你所使用.该语言camelCasePascalCaseunderscore_variables.正确命名/可读/可理解是最重要的事情.

关于这个前缀(或匈牙利表示法):它在MSDN中具体说明:C#文章中的一般命名约定:

[...]

不要使用匈牙利表示法.

匈牙利表示法是在标识符中包括前缀以编码关于参数的一些元数据的实践,例如标识符的数据类型.

[...]


Jay*_*ggs 7

对这些问题的通常建议是在您自己的代码内和雇主内部保持一致; 如果您的雇主使用匈牙利表示法,您也应该使用它,无论接受的做法如何.


Pat*_*her 5

您以前的雇主更符合当前的做法.使用代码对变量进行前缀不是最佳实践.你应该现在只做它,如果它澄清代码,它通常不会.对任何类型的前缀的明显需求应被视为次要的Code气味,表明当前的例程可能过于复杂.花时间改善代码而不是添加前缀.

有关此练习的历史,请参阅匈牙利表示法.名为Apps Hungarian表示法的版本意味着前缀有助于指示变量的用途,而不是其类型.每隔一段时间这是合法的,但很少需要.更常见的做法称为系统匈牙利表示法,其中前缀表示类型.(幸运的是)这种情况变得不那么常见了.

不要太沮丧,不得不这样做.我们不得不实施许多更糟糕的做法.如果这很糟糕,你很幸运.有一些标准(只要他们不疯狂)比没有标准更好.