汎用的な名前の変数は作らないようにする


最初に

本記事は、私がリーダブルコードを読んで学んだことをメモしているものです。
もし、理解が足りていない部分がありましたら、ご指摘いただけると嬉しいです。

汎用的な名前とは?

  • 「tmp」・「retval」・「foo」のような単語単体で見ても大まかな意味しかわからない or 大まかな意味もわからない名前
  public int GetCount(string value)
  {
    //  これは戻り値という情報しか入っていない
    var retval = 0;

    retval = value.Length;

    return retval;
  }

どうすればいいか

  • 変数の「目的」や「値」を示す名前をつける
  public int GetCount(string value)
  {
    //  この変数はなにをカウントしているのかが変数名のみで判断できる
    var valueCount = 0;

    valueCount = value.Length;

    return valueCount;
  }

汎用的な名前を使わない場合の利点

  • 変数の目的を事前に伝えることができる
  • 目的、値の名前を持っている変数が違う使われ方( バグ )をされていた場合にすぐに気付くことができる

汎用的な名前でもうまく使っえば使える

例 : 2つの変数を入れ替える

  if(right < left)
  {
    tmp = right;
    right = left;
    left = tmp;
  }
  • この場合の「tmp」変数の目的は、一時的な変数の保存かつ、生存期間が数行のみなので「tmp」という、「この変数には他に役割がない」と明示している変数名は理にかなっている