|
|
|
1-2-3. 変数名の命名変数名に関しては検討を要する事項がたくさんあります。まず変数は前にも触れたハンガリー記法と言う、今では当たり前の命名法を使います。ハンガリー記法とは、マイクロソフトのハンガリー出身のプログラマであるCharles Simonyiにちなんだものです。ハンガリー記法 ハンガリー記法とは、本来の名前の前に小文字で、変数の型をシボル化した文字を付加する記法です。例えばnCmdShow,lpszFileName,hWndなどがこの方法で付けた変数名です。nCmdShowのnは整数を表します。lpszFileNameのlpszとはlong pointer to a string terminated by zeroを表します。これは歴史のある命名で、少し後で検討します。またhWndのhは、ハンドルでHWND型であることを表します。変数名の一般的な命名
ポインタのハンガリー記法 ポインタはハンガリー記法では、lpでしょうか、pでしょうか。lp の l はWindows 3.1のころの16ビットOSの名残です。FARやLong PointerはWIN32では、32ビットのフラットメモリですので関係ありません。しかしAPIはWindows 3.1の頃に確立しましたので、WIN32のAPIの仮引数や、構造体のメンバー変数にlpの名称を使います。 これはどちらを使っても結構です。ただし自分で命名する場合は、pはlpか固定しましょう。私はpをポインタに使っています。lpを使うのはAPI関係の時だけです。しかしAPIもこの辺は不徹底で、一部新しいAPIにはpを使った変数名もあります。一般的な型のハンガリー記法 ハンガリー記法はデータ型を示すプレフィックス記号を先頭に小文字で付加します。そして最初が大文字の名前(szName,iCounter など)が続きます。c char by,b BYTE n short,int b,f BOOL(int) w WORDかUINT l LONG dw DWORD fn 関数のポインタ s 文字列 sz ASCIIZ文字列 p,lp ポインタBYTEとBOOLでbが使われていますが、byをBYTEにする時は、bをBOOLにして、bをBYTEにする時は、fをBOOLに使用しましょう。ポインタの場合は、例えばlpdwSizeならDWORDのポインタを指します。 i int x,y shortでx,y座標 cx,cy shortで幅と高さ良く使う変数は、上記の様な型を示します。 構造体の命名 構造体は、やや例外的な命名法を使用します。以下の宣言文をまずご覧ください。 typedef struct tagAPBPOS { // pos,ppos,pp
DWORD dwSize; // データの全サイズ
DWORD dwNumber; // 個数
LONG lOffset; // ファイル上の位置
} APBPOS,*PAPBPOS;
これはファイル上のあるデータのサイズと個数とファイル位置を示す構造体です。ローカルの構造体以外は、だいたいはtypedefで宣言します。そしてtagXXXと名前を付けますが、この指定はリストの様な、自分自身のポインタを、メンバに使わなければ必要ありません。その次のpos,ppos,ppは、変数に使うときに使用する名前を実体とポインタで明示しています。pposとppの様に複数の名前を使うこともあります。次の3行はメンバです。最後に構造体の実体とポインタの名前をAPBPOS,PAPBPOSと付けています。構造体の名前は型宣言と同じなので、すべて大文字を使用します。これを使用する時は次のようにします。
APBPOS posText,posBmp; PAPBPOS ppCurrent,ppNext;変数を1つだけ使用する場合は、posやppと言う名前を普通は使用します。
|