変数とメソッドの命名ベストプラクティス15

この記事は、Cagdas Basarane 氏のブログ、 CodeBuild から 2012年2月20日の記事 "15 Best Practices of Variable & Method Naming" を翻訳したものです。

原文URL
http://codebuild.blogspot.com/2012/02/15-best-practices-of-variable-method.html

  1. 十分短く十分長い変数名をスコープごとに使用する。一般的に、ループカウンタには1文字、条件やループ変数には1単語、メソッドには1-2単語、クラスには2-3単語、グローバル変数には3-4単語を使用する。
  2. 具体的な(specific)名前を使用する。例えば、"value"、"equals"、"data"といった変数名はいかなる場合も有効ではない。
  3. 意味のある(meaningful)名前を使用する。変数名は、格納する値を表すのに正確な説明であるべきだ。
  4. 変数名を"o_"、"obj_"、"m_"などから始めない。変数名に、自身が変数であると自己言及するタグは必要ない。
  5. 自社の命名規約に従い、アプリケーションを一貫した変数名で書く。例えば、txtUserName、lblUserName、cmbSchoolType、といったふうに。そうしなければ、可読性は下がり、検索/置換ツールは有効ではなくなる。
  6. プログラミング言語の標準に従い、大文字/小文字の文字列を一貫しないまま使用しない。例えば、 userName、UserName、USER_NAME、m_userName、usernameなどの混在だ。Javaの例を挙げる。
    • Camel Case(Upper Camel Case)をクラスに使用する。VelocityResponseWriter
    • Lower Case(Lower Camel Case)をパッケージに使用する。com.company.project.ui
    • Mixed Case(aka Lower Camel Case)を変数に使用する。studentName
    • Upper Caseを定数に使用する。MAX_PARAMETER_COUNT = 100
    • Camel Caseをenumクラスに使用し、Upper Caseをenum値に使用する。
    • '_' を定数とenum値以外のいかなる場所でも使用しない。(これらは定数だ。)
  7. 同じ変数を同じクラスの異なるコンテキストで使用しない。例えば、メソッドとコンストラクタ、クラスなどだ。そうすれば、よりシンプルに理解しやすく保守もしやすくすることができる。
  8. 同じ変数を、メソッドや条件などの異なる目的で使用しない。代わりに、新しく別の名前の変数を用意する。このことは、理解しやすさや保守のしやすさにも重要だ。
  9. ASCIIではない文字を変数に使用しない。それらは君のプラットフォームでは動作するかもしれないが、他のプラットフォームでは動作しない可能性がある。
  10. 長すぎる変数名を使用しない(50文字とか)。長すぎる名前は醜悪で、読むのが困難なコードだ。その上、いくつかのコンパイラでは文字数制限(character limit)により動作しない。
  11. 命名のための自然言語を一つに決めてそれを使用する。例えば、英語とドイツ語の混在した名前は調和がとれず、読みずらい。
  12. 意味のある名前をメソッドに使用する。名前はメソッドの正確な動作(action)を具体的に表し、大抵の場合、動詞で始まる(createPasswordHashなど)。
  13. 自社の命名規約に従い、アプリケーションを一貫したメソッド名で書く。例えば、getTxtUserName()、getLblUserName()、isStudentApproved()などである。そうしなければ、可読性は下がり、検索/置換ツールは有効ではなくなる。
  14. プログラミング言語の標準に従い、大文字/小文字の文字列を一貫させないままで使用しない。例えば、getUserName、GetUserName、getusernameなどの混在だ。Javaの例を挙げる。
    • Mixed Caseをメソッド名に使用する。 getStudentSchoolType
    • Mixed Caseをメソッドパラメータに使用する。 setSchoolName(String schoolName)
  15. 意味のある名前をメソッドパラメータに使用する。そうすればドキュメントがない場合でも自身をドキュメンテーションすることになる。