Entry

インスタンス変数の命名問題

2008年07月30日

こちらの話から。

職場で話題になったこと。

  1. m_value
  2. mValue
  3. this.value(self.value)
  4. _value
  5. value_
  6. value

と色々あるわけですが、

メンバ変数(インスタンス変数)の命名 - 神様なんて信じない僕らのために

インスタンス変数に特別な印をつける慣習があるって知らなかった頃は,何もつけてなかったんですけど(当たり前だけど),いざつけるとなると,なにげにいつも迷ってしまいます。割とたくさんあるんですね。

ちょっと前までは,かっこつけて(?)アンダースコアを付けてたんですけど,接頭辞にしようか接尾辞にしようか迷ってるうちに,どっちか分からなくなっちゃって,結局ボツ。迷うようなら本末転倒ですしね。また,m_ スタイルは,マイクロソフトスタイルだと思うんですけど,マイクロソフトの命名は,ただでさえハンガリアン記法で接頭辞バリバリなのに,これ以上豪華にするのには抵抗があります。m_lpszPasswd とかって……。長すぎるし,アンダースコアと大文字小文字を混ぜるタイプが混じっているのも,気に食わないです。まぁ,そんなこと言っても,Windows のプログラム(SDK/MFC)を書くときは,その命名法に従うんですが(関数名だって大文字からはじめるし……)。

一方,趣味で書いてるプログラムの場合は,ポリシーにはなっていないものの,大抵,this をつけている気がします(Windows のプログラムを除く)。理由は単純で,出所が分かってた方が分かりやすい気がするから。

多分,こういう感覚って,クラスを構造体的に見るか,手続の集合として見るかによって嗜好が分かれるんだと思います。構造体的に見る向きからすると,自分自身であっても出所(this)を明示したいと思うだろうけど,手続の集合として見る向きからすると,大域変数としての識別子が,他と衝突しないようにすることの方に意識が向かう(アンダースコアとかつけたくなる)んじゃないかなぁ,と。

まぁ,そのプログラムの中で統一されてりゃ,なんでもいいんですけどね。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN