2013-04-01 6 views
5

私は変数の名前を短くて読みやすいようにしたい。変数名: "index"を省略する方法は?

でも、たとえば、リストの要素のインデックスを保持する変数の名前を付けた場合、私はelemIndexを使用する傾向があります。これは、適切な(そして普遍的に理解される)単語 "index "

「索引」を略語にするための標準的な方法はありますか?それとも誤解を避けるためにそれを完全に綴るのが最善でしょうか?

+5

あなたの略語を他の開発者が理解することは絶対に避けてください。人類のために、それらを綴る。 –

+0

@BradM:アランのように 'Idx'を使うのも悪い考えですか? –

+0

@mareserもしあなたがそれについて厳密にするなら、はい、それは悪い考えです。私は本当に長いものを簡略化する傾向があり、文脈から容易に明らかにすべきであり、いずれの場合も、セクション内の前記略語の最初の/キーの出現をコメントする。実際には、略語を避けるのがよい経験則ですが、そのようにするとコードの可読性に悪影響を及ぼしたり、誤植を増やす可能性があります。それは判断の問題です...またはあなたの組織のスタイルガイドに固執する。 – Alan

答えて

7

私の経験上、状況によって異なります。典型的には、何かが使用されているものからのインデックスであるかどうかを知ることができるので、私はしばしばそれがインデックスであることを知ることにもっと興味があります。

親指の私のルールは大体このように書き:

それは短いループにだけループインデックスである場合(例:すべてを一度に画面に収まる)とコンテキストは、インデックスが何をしているのか、読者に通知し、あなたはおそらくiのような単純なもので逃げることができます。

例:ただし、場合

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

:コードセクションが大きい、またはあなたが起こって複数のindecesを持っている場合は、画像

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

を閾値それをリストするかを示すことへのインデックスでありますインデックスは実際にコードの意味にとって重要であり、次に完全に指定します。たとえば、

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

しかし、コードは "一度書く、多くを読む"とみなされ、あなたの努力はそのように割り当てられるべきです。すなわち、書面上にたくさんあるので、読みは容易である。この目的のために、Brad Mが述べたように、読者があなたの略語を理解するとは決して考えないでください。略語を使用する場合は、少なくともコメントの中でそれらを宣言してください。

1

確立されたよく知られた慣習に固執する。一般的な規則を使用すると、コードを読むときに驚きが少なくなります。

プログラマーは、数学の慣習に慣れています。例えば。数学では、私たちは通常、インデックスにラベルを付ける:

i, j, k 

例えばながら座標は、次のような文字で参照されます。

x, y, z 

これはもちろん文脈によって異なります。例えば。 を使用して、をいくつかのグローバルインデックスを示すにはひどいアイデアとなるでしょう。非常にローカルな変数には短い名前を、より多くのグローバルな関数や変数には長い名前を使用するのがよい経験則です。

私の場合、このスタイルはRob Pikeの影響を受けています。Rob Pikeは、この詳細について詳しく説明しています。hereユーザーインターフェイスの設計と経験に関心を持つ人として、私はこれについてもっと広範に書いてきました。

関連する問題