• ベストアンサー

thisポインタ

こんにちは。 今日、会社の先輩につっこまれたんですが、 メンバを修飾するthisポインタってありますよね? 「普通使わないから消して」って言われました。 そのときの規約にもよるけど、C++でもJavaでもVBでも普通使わないって言われました。 コーディングには暗黙のルールみたいなものがありますが、 今まで4、5年程プログラムを書いてきて、 仕事では1年ちょっとですが、初めて聞きました。 thisって一般的に使わないんですか? 今まで付けるのがお作法だと思ってましたし、付けたほうが絶対見やすいと思うんですが…。 どうなんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

明文化された規約ではなく、たぶん慣例的なルールだと思います。 要は「うちでは(自分たちは)使ってないから、お前も使うな」ってことかと。 普段使ってない人は反対に混乱するのかも知れませんね。

kazuzuzu1981
質問者

お礼

他の会社はどうなってるのか分かりませんが、 社内である程度はルールを決めるべきですよね。 その都度ルールが違いすぎると混乱します…。 ありがとうございました。

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

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が定義されていなければコンパイルエラーになってしまいます。

kazuzuzu1981
質問者

お礼

なるほど。そのように設計したことはないので勉強になります。 書いていただいた設計をしていない限りはリリース前に一括置換してしまえばすむことなので 今回はおとなしく言うことを聞いておきます。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

付けても特別問題ないと思います。 既に記述しているモノを >「普通使わないから消して」 は、ちょっとよく理解できません。 そういう社内の規約ルールならしょうがないですけど。

kazuzuzu1981
質問者

お礼

一般的にそうゆうルールはないってことですよね。 消しちゃったら僕がデバッグしにくくなるんですよね…。 社内でそこまでの規約はないです。 ありがとうございました。

関連するQ&A

  • Javaのクラス内メンバの命名についてアドバイスを頂きたいです。

    Javaのクラス内メンバの命名についてアドバイスを頂きたいです。 Eclipse3.6にてJavaプログラムをしています。 普段、メンバを参照する時には"this.~~"と書いています。 ですが、この方法では入力候補(Eclipseの機能)を2回選択する動作が必要で、メンバへの参照が多いクラスだと若干手間な気がしました。(入力候補表示が重い時もありますし) 自分ではできるだけコーディングスピードを上げたいと思っていて、メンバ名や設定の工夫で改善したいと思っています。 そこで、コーディングスピードを上げるために命名(メンバ名に限らず)・設定で工夫されているところはありますでしょうか? 「そんなの、めんどくさがりなだけだ」とか「this.は明示しておく理由がある」と言われればそれまでですが… ご教授ください。よろしくお願いします。

  • プログラミングをある程度経験された方に質問です

    私は会社業務でVBしか使ったことがありません 後javaを独学でちょっとかじった程度です。 質問 1.未経験言語なのでわからない事が多い転職先で同僚に質問しまくってもいいと思いますか。 2.VBってJAVAやC,PHPに比べて簡単ですよね?コーディングしやすいですよね 3.未経験の言語を使用する会社への転職は可能でしょうか 4.JAVAやC、PHPを業務で2、3年経験した一般的な人はどの位のスキルがあるとおもいますか 5.今会社でVB(複雑で項目数の多い画面は先輩がつくるので私はそれ程難しい画面は作っていません)  を試行錯誤しながらなんとか作っているのでJAVAやPHP,Cも慣れますよね仕事をこなせますよね  VBは言語的に超簡単というわけじゃないですよね

  • '_'(アンダースコア)の使い方について

    グローバル関数や__constructなどの決め事以外で文字列の頭に'_'(アンダースコア)を付けることがありますが、あれには何か”暗黙の了解”のようなルールがあるのでしょうか? 例えばクラス名で class _Member 関数名で public function __toString() 変数名で $this->_member などなど。 初心者なもので、よろしくおねがいします。

    • ベストアンサー
    • PHP
  • 大学生 サークル 礼儀については

    新大学一年生です。 サークルに入ったのですが、そのサークルの先輩(同性)からご飯に誘われました。 そこで質問なのですが、サークルの先輩と行くご飯における、暗黙のルールやマナーなどがあれば教えていただきたいです。 また先輩と行くご飯は全て奢っていただけるのでしょうか? 今まで年上の方と親しい交流をしてこなかったので何もわかりません。 初歩的なことから教えていただけると幸いです。 よろしくお願いします。

  • 以下のサンプルでのthisが指すものについて・・・

    package ya.Sample; import android.app.*; import android.os.*; import android.widget.*; public class Sample2 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); setContentView(ll); TextView tv = new TextView(this); tv.setText("ようこそアンドロイドへ!"); ll.addView(tv); } } このサンプルにおいてLinearLayout ll = new LinearLayout(this)のthisの指すものについて質問があります。私がこのthisはSample2を指すんですよねと質問したところ 引数thisは Sample2 を指しますよね 大雑把な理解だなぁ。 Sample2は「型」なのだから、例えば「整数」や「文字列」のような概念だ。 thisは特定のインスタンスを指すのだから、1024とか"abc"とか、そのクラスに属するもののうち、特定の具象を指すものだ。 27や47が整数である、というのと同じ意味で、thisはSample2ではあるのだが、こういう場合は普通「thisはSample2のインスタンスである」と表現する とある方に回答をいただいたのですが 「thisはSample2のインスタンスである」と表現する の部分のインスタンスが理解できません・・・ インスタンスとはClassから製造されたObjectであるはずですからこの場合 Sample2クラスを雛型として作られたObjectをThisは指すとかってに再解釈してしまい、 この引数Thisはオブジェクトのことでありnew LinearLayout(this)において、LinearLayoutは引数にオブジェクトを持っているということでしょうか?そして継承関係よりこのオブジェクトはContextクラス(?)も含んでいるため、LinearLayoutクラスのLinearLayout(Context context)は呼び出しに成功するということなのでしょうか? 今までJavaの引数で見てきたのが実数や文字だったので、引数がオブジェクト(?)なのにちょっと違和感がありまして・・・ 回答していただけたらうれしいですよろしくお願いいたします!!!

    • ベストアンサー
    • Java
  • C#で開発できれば、JAVAも使えますか?

    自分は今まで、VB6を3年ほど、VB 2005を1年半ほどやってきました。 最近、C#を1ヶ月ほどやったのですが、癖さえ覚えれば、 さほどVBと変わらず、思っていたより簡単にできました。 次はJAVAかなと思っているのですが、C#ができれば、JAVAもすぐできますでしょうか? こんな経歴の自分が、JAVAの開発の現場でどのくらいで使い物になりますでしょうか?

  • 【VC++2005】ソースの書き方:コーディングを****.hのファイルに書いてもいいでしょうか?変数名の命名規則はありますか?

    VC++2005の超超初心者です。 現在、VC++2005(Express Edition)でCLRでプロジェクトを つくり、いろいろとコーディングしています。 今まで、参考書「作って覚えるVisual C++ 2005 Express Editon」 を利用して、半分泣きながらコーディングしていました。 その参考書では、コーディングを*****.cppでなく、 ****.hのファイルにすべて書いているのですが、いいものでしょうか? 先輩が残していったVC++6.0のソースを見ると、cpp内に書いていますが どちらがよろしいでしょうか? また、他の参考書を見ると、変数名の先頭に「m」をつけていますが、 何か意味があるのでしょうか? (変数名をつける時の作法ってありますか?) せっかくなら、きれいなソースを書きたいと思うので、 詳しい方いましたら、ご教授頂きたく思います。

  • クラスのメンバー変数の書き方。

    クラスのメンバー変数の書き方。 クラスのメンバー変数を書くとき、以下の3つはどちらでも同じ動作をします。 ◆privateの場合、privateを明示的に書く or 書かない ◆null初期化の場合、= nullを明示的に書く or 書かない ◆メンバー変数名に接頭辞(mTextなど)をつける or つけない チームなどで書き方をどちらかに統一するとすれば、どちらに統一するのがいいと思いますか。 理由も含めて教えて下さい。 明示的に書くとJavaに不慣れな人にも分かりやすくて良いと思います。 書かないとタイプ数が減ってコーディングが若干楽です。 接頭辞はthisを書かなくていいのが楽なのですが、なんだか気持ち悪いです。 気持ち悪いのですが、デメリットは明確に説明できません。

    • ベストアンサー
    • Java
  • メソッドの公開レベルとか設計とか

    こんにちは、さっそくですが質問です。 現在、VBでWindowsアプリを作成しています。 VBアプリの経験が0に等しいため、いろいろと調べながら作業を しています。ちなみに、Javaは経験があります。 ※意味不明な箇所があったらごめんなさい。 ボタンをクリックすると、Textの入力データを取得して、加工する 処理をつくりました。 複雑な処理になったので(1部重複)、Form クラス内にPrivateメソッドを作成して処理を任せるようにしました。 進めていると、Fromが大きくなってきまして、"このままではまずい..処理を行うソースを1つのクラスでまとめて管理しよう"と思い、ユーティリティクラス(?)を作成しました。 そのクラスでの、メソッドの公開レベル(修飾子)でつまってしまいました。 基本的にこのクラスのメソッドは上記のFormもしくは、関連したFormで しか使用しないためPublicではなく特定の範囲内のみで公開するべきと かんがえました。 いろいろと調べてみたのですが、この考えを実現する方法がわかりません。 (Javaでいうところの同一パッケージ内の公開みたいな感じです) Friendというものがありましたが、ちょっと違う気がします。 (よくわかっていませんが..) このような場合どういった方法をとればいいのでしょうか? もしくは、そもそも私の考えがまちがいなのでしょうか? (Formはでかくなってもしかたがないとか..別のやり方があるなど..) VB設計での暗黙値的設計も今の段階で、分かっておりません。 そのあたりも含め、ご存知の方がおりましたら、よろしくお願いします。

  • VBかC++かJavaかまよってます

    最終的には、情報処理技術者試験の基本情報を目指して、情報検定の情報処理システム試験をうけてます。 今、”オブジェクト指向”を理解するために、VB6を少しやっていたので、VBがいいか、プログラマー時代、ポインタで悩み苦しんで、挫折したCをやって、C++がいいか、まったく初めてのJavaがいいか悩んでます。 どれにしても、今度は、”オブジェクト指向”っていう壁を乗り越えなければいけません。 アドバイスをお願いします。

専門家に質問してみよう