【发布时间】:2013-12-10 14:53:03
【问题描述】:
在 .NET 中有一个普遍接受和广泛采用的命名约定。例如,我发现这个Blogpost 非常有用,它详细描述了内部框架代码及其外部 API 遵循的命名约定。例如int _myPrivateIntVariable 用于其他代码部分的不同情况(骆驼情况、帕斯卡情况)的私有类级变量。根据这个约定,过程级别的变量将是驼峰式,例如int myIntVariable.
因此,根据这一点,当我遍历对象集合时,我将集合命名为复数形式 (items),而迭代中的当前变量根据对象单数形式命名 (@987654326 @)。
有时我在处理对象时,描述我的对象的名词只有一种用于单数和复数的形式(这种情况在我处理德语单词时更常见,但我们也可以在英语单词中出现这种情况)。
所以假设我们有以下代码:
var sheep = new List<Sheep>();
// Adding objects to the collection
foreach (var sheep in sheep)
{
// Do something with the current sheep
}
由于循环的当前sheep 和sheep 集合的命名冲突,这段代码显然无法编译。
那么,对于这些产生的名称不会看起来奇怪/丑陋的场合,是否有任何最佳实践?
一种解决方案是在变量名称前加上下划线,但这会与私有类级别成员的约定相冲突。
目前,大多数情况下,我在偶然发现这一点时,会在 *s*ingular 变量中添加一个“S”,因此对于本示例,它将是:foreach (var sheepS in sheep)。
有没有更好的选择?
【问题讨论】:
-
var sheep = new List<Sheep>();可以重命名为var sheepCollection...只是一个想法 -
如果整个 for 循环只跨越几行,我一般使用一个字母的迭代器名称:
foreach(var s in sheep)。否则,您可以选择一个通用的迭代器名称,item、instance等。 -
编译器不对变量进行拼写检查。绵羊
-
有点离题,但也许您应该使用英语而不是德语作为关键字。 codinghorror.com/blog/2009/03/the-ugly-american-programmer.html
-
这是一个程序而不是一个短篇小说,它是一个集合而不是复数。
标签: c# .net vb.net naming-conventions