おれろぐ #z_a_ki3

(・∀・) オイ!

メソッドの命名 ableとcan

TLでメソッド名の命名についてちょっと盛り上がっていて、エアリプしていくなかで、
1つ自己解決でスッキリしたので備忘録に。

よく、状態を確認するboolean型のメソッド名で

  • canHoge
  • isHogeable

と付けるパターンがあって、「人それぞれ、好みでしょ!」と思ってたんですが、
この記事を見て納得しました。

plaza.rakuten.co.jp

例えば、「タイプできる」

I can type.

I am able to type.

と、確かにどちらも可能ですが、can はすでに持ち合わせている能力、だからいつでもタイプできるという能力で、able は実現できる能力、いつでもできる能力という意味ではなく、発話時点で実現可能な能力です。

JavaのインタフェースでRunnableやThrowable、Iterableなどは実装することによって
その機能(能力)を実現することが出来るので〜ableと命名する。

boolean変数を返すメソッドはその機能(能力)が即時に実現(実行)できるかどうかを
返すメソッドなのでcan〜と命名する。

そう考えるとスッキリ納得することができました。

英語ネイティブの人からしたら、この辺はもう無意識に使い分けるんでしょうかね。
とりあえず基本的なことなので、少しずつしっかり理解していきたいと思います。

参考
命名規約 【Okapi Project】