Boolean変数/関数にisプレフィックスを付けるのはNG

言語問わずこういったコーディング規約の話は良く議論されるが、担当中アプリでもこの話が出てきた。
Boolean変数/関数にisプレフィックスを付けるのはOKかNGか。
結論から言うとプレフィックスは付けてはいけない。

isはプレフィックスではなく英文としておかしくない時だけ付ける

変数に名前を付けるとき、考えるのはプレフィックスではなく英文としておかしくない命名にするべき。

  • isAnsweredQuestion → be動詞 + 動詞で動詞が被っているのでおかしい
  • answeredQuestion → 動詞 + 名詞なのでOK
  • isEmpty → be動詞 + 形容詞なのでOK

言語が提供するAPIにも付いてない

JavaのFile.exists()もisExists()ではなくexists()とプレフィックスはついてない。
Object.equals()もだ。

そもそもプレフィックスはなぜ付けてた

IDEが発達していなかった時の産物。現在のIDEではむしろコードのノイズになる。

まとめ

  • プレフィックスは過去の産物。できるだけ使わないことを意識する。
  • 命名するときは英語として違和感ない形のほうが本質を捉えた命名にできる。→理解しやすくバグの少ないコードに繋がる。
  • 英語勉強しよう。(私も。英語間違ってたらごめん。)