58
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

新人エンジニアに役立った命名規則6選とアンチパターン3選

Last updated at Posted at 2021-12-22

#はじめに

「関数は動詞で始める」

というのは一般的な命名規則とされていますが、Boolean型の返り値を伴うメソッド名に見事にアンチパターンにハマったのでアウトプット。
※個人ブログから技術的アウトプットはQiitaへ引っ越ししたので、こちらは過去に書いたブログとなります。

一般的に良いとされている命名6選(Boolean型)

1/ is + 形容詞
2/ has or is + 過去分詞
3/ can + 動詞原型
4/ 三人称単数
5/ 三人称単数の動詞 + 名詞
6/ should + 動詞原型

1.. is + 形容詞

  • 形容詞の状態であるかを尋ねる
ex/ isEmpty , isNull

2.. has or is + 過去分詞

  • 動詞の状態となったか(完了、経験、継続)を尋ねる
ex/ hasSent , isChanged , isChecked

3.. can + 動詞原型

  • 動詞の挙動が可能かを尋ねる
ex/ canGet , canUpdate

4.. 三人称単数

  • 動詞の状態かを尋ねる
  • 後に続く名詞が明確な場合に利用
ex/ exists

5.. 三人称単数の動詞 + 名詞

  • 動詞の状態に名詞
ex/ existsError , hasRequiredKeys

6.. should + 動詞原型

  • 動詞の挙動を行うべきか尋ねる
ex/ shouldContinue , shouldCollect , shouldRedirect

などが一般的。

アンチパターン3選

  1. check + Something
  2. is + be
  3. 動詞原形 + 名詞 文法的に誤り

1. . check + Something

  • アンチ理由:YesかNoかが不明確
ex/ checkPesonalityId , checkError

2. . is + be

  • アンチ理由:文法的にアウト
ex/ 
) isFail / isEnable
) isFailed / isEnabled

3. . 動詞原形 + 名詞 文法的に誤り

  • アンチ理由:これも文法的な誤り
ex/ 
) existError
) existsError

指針

ifの仮定文の条件に入れたとき、「変数名 == true」をつけないと文章として成立しない変数名は避ける

良い例

if (hasPersonalityId){
  return db.doc
}

> ) もしパーソナリティIDを持ってたらDBのドキュメントを~~~返す
> 文章的に成立する

悪い例

if (personalityIdFlag){
  return db.doc
}

> ) もしパーソナリティIDフラグなら,DBのドキュメントを~~~返す
> 文章的に成立しない
if (personalityIdFlag == true){
  return db.doc~~~
}

> ) もしパーソナリティIDフラグがtrueなら,DBのドキュメントを~~~返す
> 文章的に成立する.故に避けるべき変数

例外(関数名)

  • 実務でハマったのが以下
ischecked (channelId:string,personalityId:string){
  hoge
 }
  • 意図していた命名の訳:パーソナリティIDがチャンネルIDと一致していたらtrueを返す。

↑の 2.. is + 過去分詞 を意識したが、これだと何がチェックされたかわからない。

つまり、ルールを意識しすぎた。

結果的に、このファイルが何のパーソナリティidが明確であったためにアンチパターンでもある

checkPersonalityId(channelId:string,personalityId:string){
  hoge
 }

関数名だけではYesかNoか不明確だが、

ディレクトリ構成上で何がYes/Noか明確にされているなら特別にOKだよね

また、変数名ではなく関数名なので、過去分詞にしなくてOKだよねとなり、edは省いてもOK

とレビュー頂き、無事にapprove頂いた。

まとめ

  • 「関数は動詞で始める」が基本のキ
  • 一般的に良いとされている命名6選は守ろう、アンチパターンも意識する
  • 指針である「ifの仮定文の条件に入れたとき、『変数名 == true』をつけないと文章として成立しない変数名は避ける」
  • 例外でアンチパターンがOKの場合もある

参考

58
61
2

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
  3. You can use dark theme
What you can do with signing up
58
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?