この質問が少し聞かれたことは知っていますが、見た目では、この質問に対する明確な「はい」または「いいえ」の答えはありませんが、それでも、何かについて少し混乱しています.
通常、私がプログラミングするときは、プレフィックスに関するいくつかの規則に従います。
- m_メンバーの前で
- プロパティの前の p_
- s_ static の前
- パラメータの前に a_
- l_ ローカル変数の前
私は今、新しい仕事に就きましたが、コードで接頭辞が使用されていないことに気付きました。その理由を尋ねると、メンバー変数とローカル変数を追跡するすべての作業を IDE が行うとの回答がありました。今思うと、そうかもしれませんが、接頭辞の方が使いやすいのではないでしょうか?
たとえば、メンバー、静的、および「ロボット」という名前のローカル変数がある場合、メソッドを作成するときにそれを参照するのは面倒ではありませんか? これはおそらく非現実的な例ですが、非現実的な状況でも一貫して適用できる適切なルール セットを頭の中に入れておきたいと思っています。
この例は、ハンガリー語表記を使用することを正当化しますか?
長所/短所のリストを作成し、それについてさらに学びながら編集すると思います.
ハンガリー人に対する反論:
Class.Robot
またRobot
this.robot
robot
ハンガリー語は必要ありません。
カウンター:
まだ矛盾があります。ロボットは、さまざまな方法でさまざまなことを意味する可能性があります。一貫性を保つために、各 Robot 変数の前に Class または this のプレフィックスを付ける (または何も付けない) 必要があります。
その上、静的変数 Strawberry にアクセスしたいとしましょう。Strawberry という名前のメンバー変数が定義されていないことをどうやって知ることができるでしょうか? 見えない別のファイルで定義されている可能性があるため、予期しない結果が生じる可能性があります。これは IDE を介して表示されると言うかもしれませんが、IDE が伝えていることを見逃す可能性がある一方で、参照しているものを確認できるため、接頭辞を使用する方が優れていると私は主張します。もちろん this/Classname プレフィックスを使用することもできますが、そのようなものはハンガリー語表記を使用しないという目的を無効にします。
ハンガリー人に対する反論:
この規則違反は、フィールドと変数の命名にハンガリー語表記が使用されている場合に発生します。ハンガリー語表記の使用は C++ コードで広く普及していますが、C# の傾向は、変数の型に基づくのではなく、変数の使用目的を説明する、より長く、よりわかりやすい変数名を使用することです。
カウンター:
私が言及した接頭辞は、変数の型に基づくものではありません。実際、接頭辞は、変数が何に使用されるかを指定します。
ハンガリー人に対する反論:
Visual Studio などの最新のコード エディターを使用すると、変数またはフィールドの型情報を簡単に識別できます。通常は、マウス カーソルを変数名の上に移動します。これにより、ハンガリー語表記の必要性が軽減されます。
カウンター:
これは事実ですが、私自身は、エラーが発生しない限り、変数名の上にマウスを置いたことはほとんどありません。対照的に、ハンガリー語表記では、変数がクラス内のどこにあるかがすぐにわかります。
述べる:
Microsoft は、ファイル名にハンガリー語表記を使用することを推奨していませんか? インターフェイス ファイルの前に I を付けるのが慣習であると読みました。これはハンガリー語表記の形式です。これは上記の私の質問とは直接関係ありませんが、ハンガリー語表記が推奨される場合があるという点を提起しています。