• ベストアンサー

フィールド(メンバ変数)のプリフィックスについて

C#でプログラムを作っていて、ふと思ったのですが、 皆様は「メンバ変数」であることをあらわすために どんなプリフィックスをつけられていますか? また、その理由も教えていただけると幸いです。 一般的にどんなプリフィックスを使うのかわからなくて、 ネットで検索してみたら、『m_変数名』というものがあったのですが、 別のサイトでは「『m_変数名』は古い」みたいな記述もあり…。 どれが正解でどれが間違いというのは一概に言えないと思うので、 いろんな方の意見を伺いたく存じます。よろしくお願い致します。

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

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

m_ってのは、C#なんてまだ無かった時代のC++の初期に、当時Microsoftの中の人が昔提唱してたものですね。 C#の場合、個人的にはpublicな変数(struct以外ではまぁ無いけど)にはつけない。 クラスのメンバ変数でもつけないことが多い。 何も無いか、せいぜい「_」のサフィックス/プレフィクスだけとか。 少なくとも、C#でm_は個人的にはありえない。 (C++でも嫌いなので…結局つけることはないですが)

kurage-fuwari
質問者

お礼

ご回答ありがとうございました。 「m_」はやはりありえないのですか…。 そういえば、「_」だけというのは本でも何回か見たことがあります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.4

仕事でかいていて、変数名に規則があれば、それに従う。 仕事でないなら、解りやすいもの。別にm_が古いなんてことはないと思いますが。MFCが(.NETに比べて)古いというなら解りますけど。 いろんなところで議論され尽くしてる感はあるけど、どんなprefixをつかうかなんて、結局は好き嫌いでしかないですね。 ただし、C#はインテリセンスが賢いので、自分で書くときは何も付けないですね。

kurage-fuwari
質問者

お礼

アドバイスありがとうございます。 やっぱり、基本は好き嫌いですよね(^^;) 自分の好みだけで作って、気づかないうちに、他人にわかりにくいコードになっていたら嫌なので、 世間的にはどんな感じなのか気になって質問させていただきました。 talepandaさんが今までに見られたプリフィックスで 「解りやすいもの」とは具体的にどんなものだったか 教えていただけるとありがたいです。

全文を見る
すると、全ての回答が全文表示されます。
  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.3

小文字、という以外何も。 範囲や内容を限定したければメソッド経由で更新しますから、素のメンバ変数は分かりやすい文脈以外でほとんど使いませんから。

kurage-fuwari
質問者

お礼

ご回答ありがとうございました。 私のコードでは、素のメンバ変数を、 クラス内のいろんな場所で参照しちゃっています(^^;) プリフィックス云々以前に、それ自体がまずいのかなぁ…。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

僕は、"メンバ変数"であることを示すシルシはなにも付けない。 付けたところでさほど役には立たないから。

kurage-fuwari
質問者

お礼

ご回答ありがとうございました。 プリフィックスつけなくても、そんなに困らないものなんですね。 今まで何らかのプリフィックスを付けていたので、 次は一度付けずにやってみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メンバ変数に関して

    現在、C++にてプログラム作成しております。 1点プログラミングを行っている中で疑問になった点があります。 アイデア・方法等があれば教えて頂けると幸いです。 現在、メンバ変数として配列を定義したプログラムを作成しております。 そのメンバ変数を同クラス内のたくさんのメソッドから呼び出して処理を行っているのですが、そのメンバ変数の配列数を固定配列数ではなく、可変な配列数にしたいと考えております。 プログラムの実行後に取得した値をメンバ変数の配列数にしたいのです。 このように、メンバ変数の配列数の可変可を実施することは可能でしょうか?

  • クラス型のメンバ変数について

    クラス型のメンバ変数って、どういったメリットがあるのでしょうか? 以下のプログラムは疑問点の部分だけ書いたプログラムです。 class Caaa { (内容) }; class Cbbb { protected: Caaa m_bbb; } 上のプログラムの、 Caaa m_bbb; の部分が、どういった意味(使い道)があるのかわかりません。 int型やvoid型のメンバ変数は分かるのですが、他のクラスの型をもったメンバ変数はどういった意味があるのでしょうか。 どなたが教えてください。

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

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

    • ベストアンサー
    • Java
  • ラジオボタンのメンバ変数

    VC++6.0でMFC AppWizard(exe)というプロジェクト、ダイアログベースでプログラミングしています。 ダイアログにラジオボタンを三つ配置し、Radio1を右クリック→プロパティ→グループにチェックを入れました。 そして、IDC_RADIO1にメンバ変数m_Radio(int)を追加してコンパイルすると「問題が発生したため終了します」というダイアログが出ます・・。 メンバ変数を削除するとコンパイルは成功します。 何が間違いでこんなエラーが出るのでしょうか? どうかよろしくお願いします。

  • クラスメンバの中で配列を利用したい

    Cで書いたプログラムをC++に移植してます。 普通の変数はクラスメンバに置き換えてしまえばよろしいのですが、 配列の場合そのままクラスメンバに置き換えたら 問題が発生します。(予想はついていたのですが…) class test{ private: int m_test[100]; }; クラスメンバを配列に設定するにはどうすればよいですか?

  • Java変数について

    こんにちは。Javaの初心者です。 そこそこ基礎知識もついてきたかと思いまして、初めて実用プログラムを組むことにしました。 そこで、今問題にあたってるんですが、 メソッド内にあるローカル変数に入ってる値を、メンバ変数に代入することは出来るのでしょうか? もしできるのでしたら、その方法をご教授してくだされば幸いです。 プログラムの初心者なので、勘違いしてることが多々あるかと思われますが、 ご回答の方、宜しくお願い致します。

    • ベストアンサー
    • Java
  • Python のクラスのメンバ変数

    class foo( object ):        __result = []        def __init__( self, n, m ):       # self.__result = []       self.__result.append( n + m )    def func( self ):       print self.__result[0] hoge = foo( 1, 2 ) fuga = foo( 3, 4 ) hoge.func() # 3 fuga.func() # 3 ... !? 数値や文字列といったメンバ変数は、コンストラクタで意図的に初期化してやらなくても正常な値になりますが、それ以外のオブジェクトや配列だと fuga は hoge のメンバと同じものになってしまいます。他の言語の感覚ですと、__result は foo のメンバな上にプライベートなので、fuga の __result が hoge.__result を指すのは考えられない事なのですが、この書き方がマズいのでしょうか。 また、もしこのようになっている理由等もありましたら、併せてお教えください。

  • テーブルというグローバル変数

    学生時代にプログラミングを習ったときには、 グローバル変数は悪のものであると習いました。 しかし、プログラマーに就職してみると、 テーブルというなのグローバル変数がいたるところで 使われています。 グローバル変数を使用しないようなソースに することはできるのでしょうか? また、テーブルというのは一般的によく使われるもの なのでしょうか?検索してもそれらしいサイトが 見当たらないですし、Cの参考書を見ても、そのような ものは出てきません。

  • フィールド名を変数で指定するには

    $device = 'a'; $Field = $device.'_type'; $sql = 'select "'.$Field.'" from table where member_id = "'.$id.'"'; $res = mysql_query($sql); $row = mysql_fetch_assoc($res); if ($row){ echo $row[$Field]; } $row[$Field]をechoで表示すると『a_type』と表示され、中身が表示されません。 フィールド名を変数ではなくa_typeと直接入力すると正常な結果が表示されます。 ちなみにtableにはa_type、b_type、c_typeテーブルが存在します。 ドコモからのアクセスはa_type、auからはb_typeと、ユーザーエージェントによって分けています。 フィールド名を変数で指定して値を取得するには、どのようにすればよいでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • マルチスレッドと変数

    マルチスレッドのプログラムを組んでいます。 そこで、複数のスレッドからアクセスする変数があるのですが、これの扱いについて解らないことがあります。 ・変数を複数のスレッドから書き換える場合は、予想していた結果と違うことになる。 ここまではいいのですが、 ・変数を複数のスレッドから、参照だけするのは問題ない。 ・変数を複数のスレッドから、参照し、書き換えるのはひとつのスレッドだけならば、問題はない。 (上の"変数"は全て、Lockをかけていない状態です。) という認識をもっているのですが、これは間違いなのでしょうか? 「参照だけならばLockはかけなくてよい」というのをどこかで読んだような覚えがあり、そのまま勝手に最後の推測をしています。 現状ではうまくいっているようなのですが、とても不安です。 もしくは、状況、環境、コーディングによって上の仮定は成立したり、成立しなかったりするのでしょうか?環境はC#ですが、もしどのような言語、環境であっても一般的に、同じような結果になるのなら、それも合わせてご教授お願いします。