77
@GinGinDako

booleanメソッドの命名規則

この記事は最終更新日から1年以上が経過しています。

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

77
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
この記事は以下の記事からリンクされています

コメント

can+動詞 はあり? なし?

0
(編集済み)

@shiracamus さん
コメントありがとうございます!
ありだと思います。
記載が抜けていたので、追記させていただきました。
ご質問ありがとうございました。

0
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Microsoft Buildで発表された技術情報に関する記事を投稿しよう!
~
競技プログラミング研究月間 - みんなでさらなる高みを目指そう
~