2012-02-26(日)
■[翻訳]変数とメソッドの命名ベストプラクティス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の例例を挙げる。
- 意味のある名前をメソッドパラメータに使用する。そうすればドキュメントがない場合でも自身をドキュメンテーションすることになる。
コメントを書く
トラックバック - http://d.hatena.ne.jp/suginoy/20120226/p1
- Twitter / @boxihoshinsha
- Twitter / @yopi813
- Twitter / @morozumi_h
- Twitter / @masa711115
- Twitter / @patraqushe
- Twitter / @ricktsukida
- Twitter / @daiend
- Twitter / @tksh2rk
- Twitter / @mokuzu_tw
- Twitter / @inusen
- Twitter / @Type76
- Twitter / @olivesystem
- Twitter / @suginoy
- Twitter / @so_und
- Twitter / @s_sikisya
リンク元
- 556 http://b.hatena.ne.jp/hotentry
- 438 http://b.hatena.ne.jp/hotentry/it
- 406 http://www.ig.gmodules.com/gadgets/ifr?exp_rpc_js=1&exp_track_js=1&url=http://www.hatena.ne.jp/tools/gadget/bookmark/bookmark_gadget.xml&container=ig&view=default&lang=ja&country=JP&sanitize=0&v=5a4c3346a9f09612&parent=http://www.google.co.j
- 348 http://t.co/wW9GtfmT
- 224 http://reader.livedoor.com/reader/
- 210 http://bit.ly/yygyYG
- 152 http://www.google.co.jp/reader/view/
- 144 http://b.hatena.ne.jp/
- 136 http://longurl.org
- 118 http://www.sleipnirstart.com/
おとなり日記
- 2012-02-27 日々java 4/35 11%
- 2012-02-26 所謂マジメ系クズのBlog 3/47 6%
- 2012-02-27 Yosuke’s Blog 3/55 5%