11

我喜欢保持变量的名称简短但易读。

尽管如此,例如,当命名保存某个列表中元素索引的变量时,我倾向于使用elemIndex,因为我不知道缩写“索引”这个词的正确(和普遍理解的)方式。

是否有缩写“索引”的规范方式?还是最好把它完整拼写以避免误解?

4

2 回答 2

10

根据我的经验,这取决于上下文。通常我可以从它的用途来判断某物是否是索引,所以我通常更感兴趣的是知道它是什么的索引。

我的经验法则大致是这样的:

如果它只是一个短循环中的循环索引(例如:所有内容同时显示在屏幕上)并且上下文告诉读者索引在做什么,那么您可能可以使用简单的i.

示例:对图像进行阈值处理

//For each pixel in the image, threshold it
for (int i = 0; i < height; i++ ) {
  for (int j = 0; j < width; j++) {
    if (image[i][j] < 128) {
      image[i][j] = 0;
    } else {
      image[i][j] = 255;
    }
  }
}

如果代码部分较大,或者您有多个索引,请指出它是哪个列表的索引:

File[] files_in_dir = ...;
int num_files = files_in_dir.length();
for (int fileIdx = 0; fileIdx < num_files; fileIdx++) { //for each file in dir.
  ...
}

但是,如果索引实际上对代码的含义很重要,则完全指定它,例如:

int imageToDeleteIdx = 3; //index of the image to be deleted.
image_list.delete(imageToDeleteIdx);

然而,代码应该被认为是“一次编写,多次阅读”,你的努力应该被这样分配;即:写作很多,所以阅读很容易。为此,正如 Brad M 所提到的,永远不要假设读者理解你的缩写。如果您要使用缩写,至少在评论中声明它们。

于 2013-04-01T21:22:15.160 回答
1

坚持既定的和众所周知的惯例。如果你使用通用的约定,人们在阅读你的代码时就会有更少的惊喜。

程序员习惯于使用许多数学惯例。例如在数学中,我们通常标记索引:

i, j, k

例如,坐标用字母表示,例如:

x, y, z

这当然取决于上下文。例如,使用i来表示某个全局索引将是一个糟糕的主意。为非常局部的变量使用短名称,为更多的全局函数和变量使用较长的名称,这是一个很好的经验法则。

对我来说,这种风格受到了 Rob Pike 的影响,他在这里详细阐述了这一点。作为对用户界面设计和体验感兴趣的人,我也写过更多关于此的文章。

于 2018-02-13T20:52:16.680 回答