辻(忠)です。
>福嶋@PFUです。
>
>> 上記理由から,クラスのインスタンス変数名は,m_dummy とすべき
>> だ,という議論があります.反論したいのですが,よい反論が思い
>> 付きません.
>
>変数名には、その変数が何であるかを指し示すかを英単語(自然言語)を
>使って表記したほうがわかりやすいです。
>よく、インスタンス変数の先頭に'_'をつけるとか(「リファクタリング」
>の本でそうなっています)、このように'm_'をつけるとかいう人がいますが、
>| 見にくくていいのだ。
>とか言われると、ハァ? といいたくなります。
>プログラムソースを人に見せることがないのでしょうか?
そんなに見にくいでしょうか?
私自身がVC++で育ってしまったせいもあるのでしょうが、
メンバ変数へのプレフィックスは抵抗を感じません。
むしろスコープの違う変数に同じ命名規則を適用する方がどうかと思います。
グローバルスコープであれば大文字(もしくは g_ で)、
ローカルスコープであれば小文字で、
クラスメンバであればm_で(Javaであれば「フィールドであれば _ で」というべきか?)
変数を始める、というのは意味のあるコーディング規約だと思います。
実際、平鍋さんの引用した例では、何らかのプレフィックスでの対応が
一番簡単(確実)だと思います。
>余分な識別子を設けることにより、
>・識別子が違ったり、同じ識別子でも意味が違う使い方をしてきた人が
> (たとえCode Conventionを作ったとしても)間違いやすい。
>・識別子をつけるべき所につけなかったり、その逆をしてしまったりす
> るミスが発生し、結果として識別子の役割を果たせない。
>などのデメリットがすぐに思い付きます。
これはコーディング規約を守るようにお互いに気を付け、
また指摘し合うというのが正しいのではないでしょうか。
「その分余計なオーバーヘッドが発生する」
といわれればその通りですが、やはりこれは慣れの問題かと。
>識別子など余分なものは、プログラムソースから排除するべきです。
言語もしくは開発環境側で変数のスコープを規定していてもらえれば
それも可能なのでしょうけれども。。。
現状のJava(C++)では難しいと思います。