- ベストアンサー
thisポインタ
こんにちは。 今日、会社の先輩につっこまれたんですが、 メンバを修飾するthisポインタってありますよね? 「普通使わないから消して」って言われました。 そのときの規約にもよるけど、C++でもJavaでもVBでも普通使わないって言われました。 コーディングには暗黙のルールみたいなものがありますが、 今まで4、5年程プログラムを書いてきて、 仕事では1年ちょっとですが、初めて聞きました。 thisって一般的に使わないんですか? 今まで付けるのがお作法だと思ってましたし、付けたほうが絶対見やすいと思うんですが…。 どうなんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
明文化された規約ではなく、たぶん慣例的なルールだと思います。 要は「うちでは(自分たちは)使ってないから、お前も使うな」ってことかと。 普段使ってない人は反対に混乱するのかも知れませんね。
その他の回答 (2)
- jacta
- ベストアンサー率26% (845/3158)
thisを使わないと期待通りにならない場合にはつけざるを得ませんし、逆にthisを付けると期待通りにならない場合は付けるべきではありません。 どちらでもよい場合は、付けても害はありませんが、単に冗長なだけなので、私は付けませんね。名前空間やパッケージをいちいちフルパスで指定しないのと似たようなものかと思います。 まあ、どちらにしても、絶対受け入れがたいような酷いコーディング規約でもないので、周りに合わせておけばよいかと思います。 ところで、C++では「thisを付けると期待通りにならない場合」がありますが、なかなか分かりづらいかと思うので少し説明します。 void g(); template <class Base> class derived : public Base { ... void f() { g(); } }; のような場合、Baseクラスでgが定義されていればBase::gを、定義されていなければ::gを使うように設計することができます。 こんな場合にthis->g()としてしまうと、Base::gが定義されていなければコンパイルエラーになってしまいます。
お礼
なるほど。そのように設計したことはないので勉強になります。 書いていただいた設計をしていない限りはリリース前に一括置換してしまえばすむことなので 今回はおとなしく言うことを聞いておきます。 ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
付けても特別問題ないと思います。 既に記述しているモノを >「普通使わないから消して」 は、ちょっとよく理解できません。 そういう社内の規約ルールならしょうがないですけど。
お礼
一般的にそうゆうルールはないってことですよね。 消しちゃったら僕がデバッグしにくくなるんですよね…。 社内でそこまでの規約はないです。 ありがとうございました。
お礼
他の会社はどうなってるのか分かりませんが、 社内である程度はルールを決めるべきですよね。 その都度ルールが違いすぎると混乱します…。 ありがとうございました。