Index: [Article Count Order] [Thread]

Date:  Fri, 31 Aug 2001 11:10:23 +0900
From:  tsujit@....jp
Subject:  [XP-jp:02437] Re: バグ・パターン
To:  extremeprogramming-jp@....jp
Message-Id:  <20010831111023tsujit@....jp>
In-Reply-To:  <20010831103100.98AC.W.FUKUSHIMA@....com>
References:  <20010831103100.98AC.W.FUKUSHIMA@....com>
X-Mail-Count: 02437

辻(忠)です。


>福嶋@PFUです。
>
>> 上記理由から,クラスのインスタンス変数名は,m_dummy とすべき
>> だ,という議論があります.反論したいのですが,よい反論が思い
>> 付きません.
>
>変数名には、その変数が何であるかを指し示すかを英単語(自然言語)を
>使って表記したほうがわかりやすいです。
>よく、インスタンス変数の先頭に'_'をつけるとか(「リファクタリング」
>の本でそうなっています)、このように'm_'をつけるとかいう人がいますが、
>| 見にくくていいのだ。
>とか言われると、ハァ? といいたくなります。
>プログラムソースを人に見せることがないのでしょうか?

そんなに見にくいでしょうか?
私自身がVC++で育ってしまったせいもあるのでしょうが、
メンバ変数へのプレフィックスは抵抗を感じません。
むしろスコープの違う変数に同じ命名規則を適用する方がどうかと思います。

グローバルスコープであれば大文字(もしくは g_ で)、
ローカルスコープであれば小文字で、
クラスメンバであればm_で(Javaであれば「フィールドであれば _ で」というべきか?)
変数を始める、というのは意味のあるコーディング規約だと思います。

実際、平鍋さんの引用した例では、何らかのプレフィックスでの対応が
一番簡単(確実)だと思います。


>余分な識別子を設けることにより、
>・識別子が違ったり、同じ識別子でも意味が違う使い方をしてきた人が
>  (たとえCode Conventionを作ったとしても)間違いやすい。
>・識別子をつけるべき所につけなかったり、その逆をしてしまったりす
>  るミスが発生し、結果として識別子の役割を果たせない。
>などのデメリットがすぐに思い付きます。

これはコーディング規約を守るようにお互いに気を付け、
また指摘し合うというのが正しいのではないでしょうか。
「その分余計なオーバーヘッドが発生する」
といわれればその通りですが、やはりこれは慣れの問題かと。


>識別子など余分なものは、プログラムソースから排除するべきです。

言語もしくは開発環境側で変数のスコープを規定していてもらえれば
それも可能なのでしょうけれども。。。
現状のJava(C++)では難しいと思います。