5

システム ハンガリアン表記を使用する従来の COM C++ プロジェクトに取り組んでいます。これはレガシー コードのメンテナンスであるため、記述された元のスタイルでコード化するのが慣習です。新しいコードはこの方法でコード化されていません。だから私はその基準を変えたり、私たちの過去の罪について議論したりすることに興味はありません =)

システムのハンガリアン表記法に関するオンラインチートシートはありますか?

これまでのところ、スタック オーバーフロー前のディスカッション ポストを見つけることができますが、過去に必要なものがすべて揃っているわけではありません。他のリンクを持っている人はいますか?

(これが自動入力リストになることを期待して、このコミュニティ wiki を作成します)

4

4 に答える 4

4

これが「SystemsHungarian」の1つで、私の経験では、より一般的に使用されていました(そしてあまり有用ではありませんでした)。

しかし、これがどれほど普遍的に続いているのか、私にはわかりません。

ハンガリアン記法のもう1つの形式は、「Apps Hungarian」です。これは、明らかにSimonyiの本来の意図です(変数の使用は、型ではなくエンコードされています)。詳細については、 http://en.wikipedia.org/wiki/Hungarian_notationを参照してください。

于 2009-12-04T18:01:17.387 に答える
4

これが従来の COM プロジェクトの場合は、MSDN に記載されているMicrosoft の Hungarian Notation 仕様に従うことをお勧めします。

これはApps Hungarian であることに注意してください。つまり、「良い」種類の Hungarian Notationです。 Systems Hungarian は「悪い」種類であり、名前の前にコンパイラの種類が付けられます。たとえばiint.

MSDN 記事の表

表 1. プロシージャー名の例

名前 説明

InitSy 引数として sy を取り、それを初期化します。

OpenFn fn が引数です。この手順により、fn が「開かれます」。値は返されません。

FcFromBnRn 指定された bn,rn ペアに対応する fc を返します。(名前だけでは、sy、fn、fc などの型が何かわかりません。)

以下は、標準タイプの構造のリストです。(X と Y は任意のタグを表します。標準の句読点によると、実際のタグは小文字です。)

表2.標準タイプの構造

pX X へのポインター。

dX タイプ X の 2 つのインスタンス間の差。X + dX はタイプ X です。

cX タイプ X のインスタンスの数。

mpXY X でインデックス付けされた Y の配列。「X から Y へのマップ」と読みます。

rgX X の配列。「レンジX」と読みます。配列のインデックスは次のように呼ばれます。

配列 rgX の iX インデックス。

dnX (まれ) 型 X によってインデックス付けされた配列。配列の要素は次のように呼び出されます。

eX (まれ) 配列 dnX の要素。

grpX ストレージに次々と格納される X のグループ。X 要素が可変サイズで、標準の配列インデックスが適用されない場合に使用されます。グループの要素は、直接索引付け以外の方法で参照する必要があります。たとえば、ストレージ割り当てゾーンはブロックのグループです。

bX タイプ X への相対オフセット。これは、可変サイズ フィールドを持つデータ構造内のフィールドの変位に使用されます。オフセットは、オフセットの測定元のベース ポインターに応じて、バイト単位またはワード単位で指定できます。

cbX X のインスタンスのサイズ (バイト単位)。

cwX X のインスタンスの単語数。

以下は、標準の修飾子です。(文字 X は任意の型タグを表します。実際の型タグは小文字です。)

表 3. 標準修飾子

XFirst X 値の順序付けられたセット (間隔) の最初の要素。

XLast X 値の順序付けられたセットの最後の要素。XLast は閉じた間隔の上限であるため、ループ継続条件は X <= XLast である必要があります。

XLim X 値の順序付けられたセットの厳密な上限。ループの継続は、X < XLim である必要があります。

XMax 他のすべての X のすべての X 値 (Max、Mac、および Nil を除く) の厳密な上限: X < XMax。X 値が X=0 で始まる場合、XMax は異なる X 値の数に等しくなります。たとえば、dnx ベクトルに割り当てられる長さは通常、XMax になります。

XMac すべての X 値の現在の (定数または割り当てではなく) 上限。X 値が 0 で始まる場合、XMac は X 値の現在の数です。たとえば、dnx 配列を反復するには、次のようにします。
          for x=0 step 1 to xMac-1 do ... dnx[x] ...
          また
          for ix=0 ステップ 1 から ixMac-1 do ... rgx[ix] ...

XNil タイプ X の識別された Nil 値。値は、0 または -1 の場合とそうでない場合があります。

XT 一時 X。スコープ内の特定のタイプの 2 番目の数量を修飾する簡単な方法。

表 4. 一般的なプリミティブ型

f フラグ (ブール、論理)。修飾子を使用する場合は、フラグの真の状態を記述する必要があります。例外: 定数 fTrue および fFalse。

w 任意の内容の単語。

ch 文字で、通常は ASCII テキストです。

b バイト。必ずしもコード化された文字を保持しているわけではなく、w に似ています。直後の修飾子の大文字によって b コンストラクターと区別されます。

sz ゼロで終了する文字列の最初の文字へのポインタ。

st 文字列へのポインタ。最初のバイトは cch の文字数です。

h pp (ヒープ内)。
于 2009-12-04T18:05:59.903 に答える
1

ハンガリアン記法の接頭辞を検索するための完全なリソースは1つもないようです。おそらく、その多くがコードベースごとに異なるためです。もちろん、非常に一般的に使用されているものがたくさんありました。

私が見つけた最高のリストはここにありました

残りは、このエントリなどの一般的に使用される規則をカバーしています

ハンガリアン記法に関するMSDNのエントリはここ にあり、この主題に関するいくつかの短い論文(おそらく互いに重複しています)はここここにあります

最善の策は、変数がどのように使用されているかを確認することです。これは、プレフィックスの定義を理解するのに役立ちます(ただし、実際には、名前が変数の使用を反映することはめったにありません)。

これらのさまざまなリンクから、表記法のいくつかの類似点をつなぎ合わせることができる場合があります。

完全に(!)MicrosoftサポートのVisualBasic用のハンガリー語オブジェクト表記法も同様です。

于 2009-12-04T18:12:59.350 に答える
1

これはレガシー プロジェクトであるため、ソフトウェア部門の管理者は、元のプログラマーが使用したハンガリアン表記法のバージョンに関係なく、スタイル ガイドのコピーを持っている必要があります。(元のプログラマーはずっと前に、より啓蒙された職場に逃げていたと思います。)

ハンガリー語表記の使用を再考する必要があります。これは元々、C の強力な型指定 (およびコンパイラの型チェック) の欠如に対するパッチでした。最新のコンパイラは、型の正確性を強制するため、ハンガリアン記法はせいぜい冗長であり、それ以外の場合はエラーになります。

于 2009-12-04T18:07:19.483 に答える