Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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#_.net_Vb.net_Naming Conventions - Fatal编程技术网

C# 对于单数形式与复数形式相同的迭代器变量,是否有命名指南?

C# 对于单数形式与复数形式相同的迭代器变量,是否有命名指南?,c#,.net,vb.net,naming-conventions,C#,.net,Vb.net,Naming Conventions,在.NET中有一个普遍接受和广泛采用的命名约定。例如,我发现这非常有用,它详细描述了内部框架代码及其外部API遵循的命名约定。例如,int\u myPrivateIntVariable用于其他代码部分的不同案例(驼峰案例、帕斯卡案例)的私有类级别变量。根据此约定,过程级别的变量将是驼峰式的,例如int myIntVariable 因此,根据这一点,当我在一个对象集合中迭代时,我将集合命名为复数形式(items),而迭代中的当前变量是根据对象的单数形式(item)命名的 有时我处理的对象中,描述我

在.NET中有一个普遍接受和广泛采用的命名约定。例如,我发现这非常有用,它详细描述了内部框架代码及其外部API遵循的命名约定。例如,
int\u myPrivateIntVariable
用于其他代码部分的不同案例(驼峰案例、帕斯卡案例)的私有类级别变量。根据此约定,过程级别的变量将是驼峰式的,例如
int myIntVariable

因此,根据这一点,当我在一个对象集合中迭代时,我将集合命名为复数形式(
items
),而迭代中的当前变量是根据对象的单数形式(
item
)命名的

有时我处理的对象中,描述我对象的名词只有一种形式用于单数和复数(这在我处理德语单词时更常见,但在英语单词中也可能有这种情况)

因此,假设我们有以下代码:

var sheep = new List<Sheep>();
// Adding objects to the collection

foreach (var sheep in sheep)
{
    // Do something with the current sheep
}
var-sheep=newlist();
//向集合中添加对象
foreach(绵羊中的绵羊)
{
//对现在的羊做点什么
}
由于循环的当前
sheep
sheep
集合的命名冲突,此代码显然无法编译

那么,在这种情况下,有没有最佳的做法可以让最终的名字看起来不奇怪/难看呢? 一种解决方案是在变量名前加下划线,但这会与私有类级成员的约定相冲突。 目前,在我偶然发现这一点的大多数情况下,我会在*S*奇异变量中添加一个“S”,因此在本例中,它将是:
foreach(绵羊中的var sheepS)

还有更好的选择吗?

绵羊对我来说很难读懂

我更喜欢mSheepS,其中m代表倍数。用双s看起来有点滑稽,但以“马”为例

内特马 内特马 内特马瑟斯酒店

当然,最好的方法是

许多马的内部


根据您的代码以及您将使用多少次,您可以在不同的版本之间进行更改,但我强烈建议使用多种版本,如:多种版本等。我想我会添加一个词来说明它是什么:

var sheepList = new List<Sheep>();
// Adding objects to the collection

foreach (var sheepItem in sheepList)
{
    // Do something with the current sheepItem
}
var sheepList=newlist();
//向集合中添加对象
foreach(羊圈中的var sheepItem)
{
//用现在的羊做点什么
}

我会避免使用样式化的前缀或后缀(如“多个”的
mSheep
,或“项目”的
iSheep
,或“单个”的
sheepS
),尤其是最后一个,因为由于清晰,很容易与
sheepS
)混淆。而试图发明一种将其复数化的方法(
sheeps
表示复数)只会让人困惑。

var sheep=new List()可以重命名为
var sheepCollection
。。。如果整个for循环只跨几行,我通常使用一个字母的迭代器名称:
foreach(绵羊中的var s)
。否则,您可以选择一个通用迭代器名称,
实例
,等等。编译器不会对变量执行拼写检查。Sheepsomewhat offtopic,但也许你应该用英语而不是德语作为关键词。这是一个不是短篇小说的程序,也是一个不是复数的集合。“m”前缀和大写字母“S”都违反了微软的.Net命名惯例。实际上,“m”前缀比我现在的“S”后缀更让我讨厌。是的,这也让我讨厌,我也不喜欢匈牙利风格。但是,当您使用数组或
哈希集而不是
列表时,显式地将列表添加到sheep中可能会令人困惑。AndreasAdler我可能会使用
集合
作为后缀,具体取决于类型。一般来说,我会说您可以使它匹配您声明为的任何类型(不一定是实现),例如,
ICollection sheepCollection=newhashset()
如果对不同的集合类型使用不同的后缀,这不是一种匈牙利符号吗?@Andreasader hm,我认为匈牙利符号是使用缩写前缀来显示类型,而使用完整后缀则是不同的。根据,.NET约定支持此视图,并且不反对使用它们。