就变量命名约定而言,是应该命名迭代器i
还是更像语义的东西count
?如果你不使用i
,为什么不呢?如果您认为这i
是可以接受的,是否存在不应该使用迭代的情况?
取决于我想的背景.如果你在某个集合中循环遍历一组对象,那么从上下文中你应该做的事情应该是相当明显的.
for(int i = 0; i < 10; i++) { // i is well known here to be the index objectCollection[i].SomeProperty = someValue; }
但是,如果从上下文中不能立即清楚它正在做什么,或者如果要对索引进行修改,则应使用更能指示用法的变量名称.
for(int currentRow = 0; currentRow < numRows; currentRow++) { for(int currentCol = 0; currentCol < numCols; currentCol++) { someTable[currentRow][currentCol] = someValue; } }
"i" 表示程序员的"循环计数器".这没什么不对.
这是另一个完全没问题的例子:
foreach (Product p in ProductList) { // Do something with p }
我倾向于使用i,j,k进行非常局部化的循环(仅在源线数量方面存在很短的时间).对于存在于较大源区域的变量,我倾向于使用更详细的名称,因此我可以在不回溯代码的情况下查看它们的用途.
顺便说一下,我认为这些命名约定来自早期的Fortran语言,我是第一个整数变量(A - H是浮点数)?