2012-03-29 16 views
13

naming convention for constants in C#はパスカルケースである:は、C#でのWindows API定数の命名

private const int TheAnswer = 42; 

しかし、時には我々は、Windows APIから既存の定数を表現する必要があります。例えば、私はこれに名前を付ける方法を

を知らない:

/// <summary> 
/// With this style turned on for your form, 
/// Windows double-buffers the form and all its child controls. 
/// </summary> 
public const int WS_EX_COMPOSITED = 0x02000000; 

私はそれをどのように名前を付ける必要がありますか?

WS_EX_COMPOSITEDとすると、すぐにthe WinAPIに関連付けることができますが、間違っています。

いくつかのオプション:

  • WsExCompositedから
  • Compositedあまりにハンガリー語 - それでCompositedと短すぎる
  • WsEx列挙 -
  • ExtendedWindowsStyles.Compositedまだハンガリー - 短所クラスで気にしない?列挙?

    • それが読み取り可能でなければなりません:

    良いの命名のための目的があることに留意すべきです。

  • FxCopとStyleCopをトリガーしてはいけません。
+13

IMO、私はこのガイドラインに違反していると、この状況では完全に問題ないと思います。要約のコメントとそのぼんやりしたWinAPI-ishnessはそのまま残すことができます - ほとんどの人が理解するでしょう。もしあなたがフォーマットを選択しなければならないなら、私は 'ExtendedWindowStyles.Composited'がクラスの定数として最も好きだと思います。 –

+1

ハンガリー人はどうすればいいのですか? –

+0

@Coryそれで、FxCopとStyleCopが文句を言うことがないように、代わりにこのようなものを装飾する必要があると言いますか? –

答えて

14

WS_EX_COMPOSITEDは、Win API(またはその他の記載されたAPI)と直接的にインターフェイスする部分では問題ありません。あなたが公開したい部分は、標準的な規則に従うべきです - 良いメソッド名でネイティブ関数を呼び出すためにパブリックファサードを分離してください(特定のフラグの組み合わせについて調査したことをついには忘れてしまいますが、あなたはそれを使用します)。

ネイティブAPIに可能な限り近い名前を維持することの利点は、MSDN /その他のドキュメントで定数を直接検索し、すぐに回答を見つけることができることです。あなたが名前を変更すると、はるかに難しくなります。

+0

それは私がそれを名前を変更すべきではないと思う正確な理由です。私はあなたが正しいと信じています。 –

0

thisがこの質問の新しい訪問者を助けるでしょう。

フィールドまたは変数名がWin32のか、COMに関連したアイテムの名前を一致させることを意図し、ひいては特別NativeMethodsクラス内のフィールドまたは変数を置き、アンダースコアで開始する必要がある場合。 NativeMethodsクラスは、NativeMethodsで終わる名前を含む任意のクラスで、Win32またはCOMラッパーのプレースホルダーとして使用されます。項目がNativeMethodsクラス内に置かれている場合、StyleCopはこの違反を無視します。

関連する問題