#booleanメソッドの命名規則
#まとめ
・使えるパターン -> is + 形容詞, has + 過去分詞, 三単現動詞 + 名詞, 助動詞 + 動詞
・アンチパターン -> YesとNoが明確でない命名
・主語を記載したいときは例外的に主語+三単現動詞
##命名規則一覧
###is + 形容詞
形容詞の状態であるかを尋ねる
ex) isEnabled
###has + 過去分詞
動詞の状態となったかを尋ねる
ex) hasSent
###3単現動詞 + 名詞
動詞の状態に名詞があるかを尋ねる
名詞が明確な場合は、省略できる
ex) hasError
###助動詞 + 動詞
可能かどうかや、するべきかどうかを尋ねる
ex) canRemoveItems
ex) shouldContinue
2019年2月21日追記
助動詞はあり?なし?というコメントをいただきました。助動詞を使用するbooleanも良く見ますし、動詞で始めるという一般的ルールにも当てはまるのでありだと自分は思います。
そのため追記しました。
##よくある間違い
YesとNoが不明確
ex) checkValid
###文法的ミス(命名規則に沿っていない)
ex) isEnable, existError
→ 正しくは isEnabled, existsError
##主語を記載したいとき
例えばユーザーが存在するかということをbooleanで表現しようとすると表現として以下のようなものをGitLabで見つけた。
public boolean userExists
public boolean isUserExists
public boolean existsUser
自分は1つ目のパターンが一番好みだ。
英文で表そうとすると
If user exists,... だからだ。
原則動詞から始めるというルールがあるので2つ目や3つ目のパターンがあるのだろうが、英語の文法としてはおかしいように見えるのであまり使わない。
stackOverflowでも主語をもつ場合の命名規則についての議論があった。
https://stackoverflow.com/questions/1566745/boolean-method-naming-readability
これをみてもuserExistsが一番多いように見える。
またuserというobjectを持っているのならuser.exists()と書くべきだ。