Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variable names: How to abbreviate "index"?

I like to keep the names of my variables short but readable.

Still, when, for example, naming the variable that holds the index of an element in some list, I tend to use elemIndex because I don't know a proper (and universally understood) way of abbreviating the word "index".

Is there a canonic way of abbreviating "index"? Or is it best to spell it in full to avoid misunderstandings?

like image 430
Matthias Braun Avatar asked Apr 01 '13 20:04

Matthias Braun


2 Answers

In my experience it depends on the context. Typically I can tell if something is an index from what it is used for, so I am often more interested in knowing what it is an index of.

My rule of thumb goes roughly like this:

If it is just a loop index in a short loop (e.g.: all fits on screen at once) and the context informs the reader what the index is doing, then you can probably get away with something simple like i.

Example: thresholding an image

//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;
    }
  }
}

If the code section is larger, or you have multiple indeces going on, indicate which list it is an index into:

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

If, however the index is actually important to the meaning of the code, then specify it fully, for example:

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

However code should be considered "write once, read many" and your effort should be allocated as such; i.e.: lots on the writing, so the reading is easy. To this end, as was mentioned by Brad M, never assume the reader understands your abbreviations. If you are going to use abbreviations, at least declare them in the comments.

like image 150
Alan Avatar answered Sep 20 '22 20:09

Alan


Stick to established and well known conventions. If you use common conventions, people will have fewer surprises when they read your code.

Programmers are used to using a lot of conventions from mathematics. E.g. in mathematics we typically label indices:

i, j, k

While e.g. coordinates are referred to with letters such as:

x, y, z

This depends of course on context. E.g. using i to denote some global index would be a terrible idea. Use short names for very local variables and longer names for more global functions and variables, is a good rule of thumb.

For me this style was influenced by Rob Pike, who elaborates more on this here. As someone with an interest in user interface design and experience I've also written more extensively about this.

like image 33
Erik Engheim Avatar answered Sep 21 '22 20:09

Erik Engheim