0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

名前の付け方 備忘録

Last updated at Posted at 2020-11-29

リーダーブルコードを読み学んだ変数や、関数、クラスなどに対しての命名方法をまとめる。

##名前に情報を詰め込む
名前は短いコメントだと思えばいい。短くてもいい名前をつければ、それだけ多くの情報を伝えることができる。
以下は情報を詰め込んだ名前をつけるための方法をまとめる。

###明確な単語を選ぶ
「名前に情報を詰め込む」には、情報が明確に伝わる単語を選ぶべき。

class BinaryTree {
     int Size();
     ...
}   

Size()メソッドが何を返すかわからない?? ツリーの高さ? ノードの数? ツリーのメモリ消費??
伝わる名前をつけるなら、それぞれHeight( ), NumNodes( ), MemoryBytes( )になる。

###汎用的な名前は避ける
エンティティの値や目的を表した名前を選ぶ

例えば、i・j・kなどの名前はインデックスやループイテレータでよく使われるが、より伝わるようにするべきである。

for (int i = o; i < clubs.size(); i++)
  for(int j = o; j < clubs[i].members.size(); j++)
     for(int k = 0; k < users.size(); k++)
      if(clubs[i].members[k] == users[j])
        cout << "user[" << j << "] is in club[" << i << "] << endl;

if文にあるmembers[]とuser[]のインデックスが逆になっているが、一目見ただけではバグがわからないだろう。
i,j,kではなく、club_i・members_i・users_iのような説明的な名前にすることで、バグば目立ちやすくなる。

###接尾辞や接頭辞を使って情報を追加する
絶対に知らせなきゃいけない大切な情報があれば、「単語」を変数名に追加すればいい。

時間やバイト数のように計測できるものであれば、変数名に単位を入れるといい。

var start_ms = (new Date)).getTime()

上記のようにすることで、start_msがミリ秒を返すことがわかり、バグが発生しにくくなる。

名前の長さを決める

スコープが小さければ短い名前でもいい。下記ではmという変数名には情報が含まれていないが、コードを理解するのに必要な情報がすぐそばにあるから把握できる。

if (debug) {
    map<string, int> m;
    LookUpNamesNumbers(&m);
    Print(m);
}

mがクラスのグローバル変数では、コードが読みにくくなるので、やめるべき。スコープが大きい時は、名前に十分な情報を詰め込んで明確にする必要がある。

名前のフォーマットで情報を伝える

定数は大文字などと決めておけば、コードの理解がしやすくなるので、フォーマットは意識すべきである。

参考:リーダブルコード

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?