ブログトップ 記事一覧 ログイン 無料ブログ開設

神様なんて信じない僕らのために このページをアンテナに追加 RSSフィード

2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
基本的に適当な日記です。あまり鵜呑みにしないでください。土日はWeb離れしているので反応遅れます。

2007-07-25

[]メンバ変数(インスタンス変数)の命名

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

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

と色々あるわけですが、

世の中では

「m_ or mでメンバである事を明示する派」(m派)

「mは冗長だから_だけで表すよ派」(接頭辞アンダースコア派=マーチン・ファウラー派)

「言語機能に乗っ取ってthisつけて表すよ派」(this派)

「前置_は言語処理系に予約されている(c/c++)ので後置_にするよ派」(接尾辞アンダースコア派)

id:nattowさんの指摘で追記。

「つけないと区別できないのは設計がまずいから俺はつけないよ、てか接頭辞も接尾辞もきもいよ派」(設計上正しければ区別必要ないよ派)

がいるような気がします。

(Rubyの@派とかは知らぬ)

で、割と最近「後置_派」(C++ Coding Standardsの影響)になったんですが、

実はJavaでもSunは

Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed.

(言語では許容されているけど変数は_や$で始めるんじゃねぇよボケナス)→意訳

http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367

といってます。

だから、という訳ではないですが、

_を使いたいなら接尾の方が良いですよ、とか思ってみたり。

まぁ、個人では好きなようにすべきですが混在は避けたいですよね、とか。

bleis-tiftbleis-tift 2007/07/25 11:10 C++だと
class hoge {
int a;
public:
hoge(int a) : a(a) {}
};
これが正しいかどうかは調べてませんが、これで普通にコンパイル通っちゃうんで、これ使ってます。これの欠点は、
class hoge {
int value;
public:
int value() const { return value; }
};
と書けない点ですね・・・
ま、基本pimpl使ってるんでその点もあまり気にはなりませんが。

Javaでは、コンストラクタではthisを使い、それ以外は基本何もつけずに書いてますね。別にフィールドとローカル変数を区別する必要もないと思いますし。
メソッドが大きくなってくるとつらいなぁ、と思いますが、そのときは分割しますね。

nattownattow 2007/07/25 11:19 「つけないと区別できないのは設計がまずいから俺はつけないよ、てか接頭辞も接尾辞もきもいよ派」のことも忘れないでください。(是非は別)
平たく言うとid:bleis-tift さんと同意見ということですが。

ああ、でも仕事で C# 扱うようになって this を書く頻度が激しく増えたというか UI とか this つけないとやってられません正直。

IsoparametricIsoparametric 2007/07/25 11:47 >bleis-tiftさん
確かに初期化リスト上では同名でもOKですね。
pimplなら問題ないのは納得です。

明確な区別は必要ないかとは思うのですが、ソース読むときに気になるかなぁとかは思います。EclipseとかIDE系は色を変えてくれるので気にならないところもありますけど。

>nattow さん
ではつけないよ派も追加しておきますです。
thisはGUIでコンポーネントが大量にある場合などは分かる気がします……。

yuguiyugui 2007/07/25 17:18 C++だとコンストラクタの初期化リストでa_(a), b_(b)と並ぶのがなんか好き。_a(a), _b(b)ではこのバランス感がない。

mnagakumnagaku 2007/07/26 01:45 私は(pre|post)fix付けない派。理由はWin32APIを見てキモかったからw
Javaは標準ライブラリを見ても、公開されているものには付けない文化だし。Javaの標準ライブラリが「付ける派」だったら、「俺、変わらなきゃ」って思ったかも知れないけどw
でも「付けない派」には1つ問題があって、「設計がまず」くならないように脳味噌を捻るので、仕事をやっつけるのには向いてないかも。命名にもコダワリが必要になるし。
でも逆に、なんか違和感があるなあ、って時に、命名がマズかったり、デザパタとかで、もう一捻りできるケースが多いので、キレイに書きたい場合は向いてるのかな。やっぱ、仕事をやっつけるのには向いてないw
因みにJavaの標準ライブラリ内に入っているOMG由来(org.omg.*)のとことかはpreで「_」が使われてるorz。CORBAとか他言語とAPIを共通にするためだと思うけど、残念な感じ。

IsoparametricIsoparametric 2007/07/26 09:00 >yuguiさん
そのバランス感は僕も好きです。
初期化リストがあるC++ならではでそこだけではありますが(笑

>mnagakuさん
僕自身は割とゆらゆらと揺れていて、
付けたりつけなかったり、色んな派閥をたゆたって
その場その場で変わったりしてしまってますが、
「つけない」時は確かに名前に拘らないとならないですよね。

逆に足止めをしたくないときに悩まないために_などをつけるのは確かに、と思いました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証