186

主にゲーム開発に関連するチュートリアル、サンプル、その他のコードで、変数( 、、...) にm_プレフィックスが使用されているのをよく見かけます。m_Worldm_Sprites

なぜ人々はm_変数に接頭辞を追加するのですか?

4

10 に答える 10

135

これは、メンバー変数である変数を定義するための典型的なプログラミング方法です。したがって、後でそれらを使用するときに、スコープを知るために定義されている場所を確認する必要はありません。これは、スコープが既にわかっていて、 intelliSenseなどを使用している場合にも最適です。開始するm_と、すべてのメンバー変数のリストが表示されます。ハンガリー表記の一部です。ここの例の範囲に関する部分を参照してください。

于 2012-10-21T14:56:08.367 に答える
12

プレフィックスはメンバー変数によく使用されます。m_主な利点は、パブリック プロパティとそれをサポートするプライベート メンバー変数を明確に区別できることだと思います。

int m_something

public int Something => this.m_something; 

バッキング変数に一貫した命名規則を使用すると役立ちます。m_接頭辞はそのための 1 つの方法であり、大文字と小文字を区別しない言語で機能します。

これがどれほど役立つかは、使用している言語とツールによって異なります。強力なリファクタリング ツールとインテリセンスを備えた最新の IDE では、このような規則の必要性が少なくなり、これが唯一の方法ではないことは確かですが、いずれにせよ実践に注意する価値があります。

于 2012-10-21T22:25:43.623 に答える
8

ロッキード・マーチンは、特に他の人のコードを読むときに、素晴らしい 3 プレフィックスの命名スキームを使用しています。

   Scope          Reference Type(*Case-by-Case)   Type

   member   m     pointer p                       integer n
   argument a     reference r                     short   n
   local    l                                     float   f
                                                  double  f
                                                  boolean b

そう...

int A::methodCall(float af_Argument1, int* apn_Arg2)
{
    lpn_Temp = apn_Arg2;
    mpf_Oops = lpn_Temp;  // Here I can see I made a mistake, I should not assign an int* to a float*
}

それが何の価値があるかを考えてください。

于 2019-10-25T15:47:28.153 に答える
1

まだ見たことのない引数の 1 つは、 「d マクロ」m_と名前が衝突するのを防ぐために などのプレフィックスを使用できるというものです。#define

curses/ncurses から#define [a-z][A-Za-z0-9_]*[^(]の正規表現検索。/usr/include/term.h

于 2019-02-15T21:17:34.327 に答える