search
LoginSignup
135
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

booleanメソッドの命名規則

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()と書くべきだ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
135
Help us understand the problem. What are the problem?