メソッドの命名 ableとcan
TLでメソッド名の命名についてちょっと盛り上がっていて、エアリプしていくなかで、
1つ自己解決でスッキリしたので備忘録に。
よく、状態を確認するboolean型のメソッド名で
- canHoge
- isHogeable
と付けるパターンがあって、「人それぞれ、好みでしょ!」と思ってたんですが、
この記事を見て納得しました。
例えば、「タイプできる」
I can type.
I am able to type.
と、確かにどちらも可能ですが、can はすでに持ち合わせている能力、だからいつでもタイプできるという能力で、able は実現できる能力、いつでもできる能力という意味ではなく、発話時点で実現可能な能力です。
JavaのインタフェースでRunnableやThrowable、Iterableなどは実装することによって
その機能(能力)を実現することが出来るので〜ableと命名する。
boolean変数を返すメソッドはその機能(能力)が即時に実現(実行)できるかどうかを
返すメソッドなのでcan〜と命名する。
そう考えるとスッキリ納得することができました。
英語ネイティブの人からしたら、この辺はもう無意識に使い分けるんでしょうかね。
とりあえず基本的なことなので、少しずつしっかり理解していきたいと思います。