伊藤@オージスです。
From: Kenji Hiranabe [mailto:hiranabe@....jp]
> 平鍋です.渋川さんの指摘で,リストを修正.
>
> メンバ変数の慣用に関して,現在,存在する有名な流儀は,以下です.
>
> ┌──────────┬────────────────────────┐
> │m_ で接頭 │ MS で使用されている.ハンガリアン記法. │
> ├──────────┼────────────────────────┤
> │接頭/接尾を付けない │JDKで使用されている. │
> ├──────────┼────────────────────────┤
> │ _ で接頭する │ 書籍「リファクタリング」,「デザインパターン」 │
> ├──────────┼────────────────────────┤
> │d_ で接頭する │ 書籍「大規模C++ソフトウェアデザイン」 │
> ├──────────┼────────────────────────┤
> │_ で接尾する │ 書籍「Exceptional C++」 │
> └──────────┴────────────────────────┘
my を接頭子でつける場合もあるようですね。Coad の
「Java オブジェクト設計」のソースの一部に使われています。
> 平鍋個人は,Java は何も付けない派.
> 今度から,C++ で "_" 後付けをやってみようと思っている派.
私はしばらく _ で接頭派でしたが、最近は m_ で接頭派ですね。
ただし型名やポインタを表す接頭子はつけません(キッパリ)。
> because, C++ でコンストラクタの引数は,メンバ引数と同じにで
> きないでしょー,初期化リストで指定する場合.あれが困るので
> す.今までは,逆に引数の方に後付けの _ を付けて,名前を毎回
> 発明するのを避けてました.あるいは,何か名前を発明してまし
> た.
初期化リストでメンバ変数名と引数名が同じでも問題ないですよ。
class Dummy {
int dummy;
public:
Dummy(int dummy): dummy(dummy) {}
};
で今まで問題が発生した記憶はありませんが。struct の場合 m_ を
つけないので、たまにこんなコードを書いたりします。
----------------------------------------
Ito Yoshiichi (伊藤 喜一)
OGIS-RI Co., Ltd. Object Technology Center
E-mail: yoshi@....jp