gpt4 book ai didi

language-agnostic - 循环变量的理想变量命名约定是什么?

转载 作者:行者123 更新时间:2023-12-02 02:40:19 47 4
gpt4 key购买 nike

如果您正在编写一个简单小循环,您应该为计数器命名什么?

提供示例循环!

最佳答案

我总是使用一个有意义的名称,除非它是一个单级循环,并且该变量除了“我经历过这个循环的次数”之外没有任何意义,在这种情况下我使用i .

当使用有意义的名称时:

  • 代码对于阅读您代码的同事来说更容易理解,
  • 更容易发现循环逻辑中的错误,并且
  • 文本搜索变量名称以返回对相同数据进行操作的相关代码片段更加可靠。

示例 - 发现错误

使用单个字母找到此嵌套循环中的错误可能很棘手:

int values[MAX_ROWS][MAX_COLS];

int sum_of_all_values()
{
int i, j, total;

total = 0;
for (i = 0; i < MAX_COLS; i++)
for (j = 0; j < MAX_ROWS; j++)
total += values[i][j];
return total;
}

而使用有意义的名称会更容易:

int values[MAX_ROWS][MAX_COLS];

int sum_of_all_values()
{
int row_num, col_num, total;

total = 0;
for (row_num = 0; row_num < MAX_COLS; row_num++)
for (col_num = 0; col_num < MAX_ROWS; col_num++)
total += values[row_num][col_num];
return total;
}

为什么 row_num ? - 拒绝替代方案

为了回应其他一些答案和评论,这些是使用 row_num 的一些替代建议和col_num以及为什么我选择不使用它们:

  • r c :这比 i 稍好一些和j 。仅当我的组织的标准是单字母变量为整数并且始终为等效描述性名称的第一个字母时,我才会考虑使用它们。如果函数中有两个名称以“r”开头的变量,系统就会崩溃,即使代码中任何地方出现其他以“r”开头的对象,可读性也会受到影响。
  • rr cc :这对我来说看起来很奇怪,但我不习惯双字母循环变量样式。如果这是我组织中的标准,那么我想它会比 r 稍好一些。和c .
  • row col :乍一看,这似乎比 row_num 更简洁。和col_num ,并且同样具有描述性。然而,我希望像“行”和“列”这样的裸名词来指代结构、对象或指向它们的指针。如果row可能意味着行结构本身,行号,那么就会导致困惑。
  • iRow iCol :这传达了额外的信息,因为 i可能意味着它是一个循环计数器 while RowCol告诉你它在数什么。然而,我更喜欢能够阅读几乎是英文的代码:
    • row_num < MAX_COLS读作“行数数量小于最大imum(数量)umn s”;
    • iRow < MAX_COLS最好读作“整数循环计数器小于最大imum(数量) umns”。
    • 这可能是个人的事情,但我更喜欢第一次阅读。

row_num 的替代方案我接受的是 row_idx :“索引”一词唯一指的是数组位置,除非应用程序的领域是数据库引擎设计、金融市场或类似领域。

我上面的例子已经尽可能小了,因此有些人可能看不到描述性命名变量的意义,因为他们可以一次性将整个函数记住。然而,在实际代码中,函数会更大,逻辑也会更复杂,因此得体的名称对于提高可读性和避免错误变得更加重要。

总之,我对所有变量命名(不仅仅是循环)的目标是完全明确。如果任何人读取我代码的任何部分并且无法立即弄清楚变量的用途,那么我就失败了。

关于language-agnostic - 循环变量的理想变量命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/101070/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com