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