電八開発倶楽部 - コーディング規約
規約というより初心者ガイドみたいなものです。Windowsの開発になれている方はあまり気にしなくても大丈夫でしょう。スタイルについてはこちら。
コーディング規約
- つぎの識別子プレフィックスは厳守事項
- 変数、関数の型宣言は必ず行う。デフォルトでintになることは最新のC++言語規格では仮定されていません。
- for()内で宣言された変数のスコープはforブロックの外である。現在のC++言語規格ではforブロック内ですが、VC++6.0互換のため電八ソースはブロック内にするとコンパイル出来ません。VC++8.0以降はデフォルトがforプロック内になっていますので、注意が必要です。
- 論理演算子をビット演算子で代用しない。
- 処理系定義型 WORD、DWORD、LONG、LPCTSTR、HRESULT などを組み込み型で代用しない。
- intやlongなどの組み込み整数型にポインタを代入しない。ポインタを入れる整数型が必要な場合はINT_PTR、LONG_PTRなどのポインタ精度数値型を使用すること。WindowsAPIの戻り値や引数がこれら〜_PTRで宣言されていたら厳密に従ってください。
- テンプレートの使用:現在は使用されていませんが、禁止しているわけではありません。
- STLの使用:現在は使用されていませんが、禁止しているわけではありません。
推奨事項
- 処理系定義型であるDWORD、TCHAR、CSTR、LPCSTRなどを組み込み型よりも優先して使う。
- 文字配列よりCStringを優先して使う。
- 次の変数名のプレフィックスは推奨事項
- 整数型の評価は常に比較を行う。
- 整数型を論理型へ代入しない。
- BOOLは論理型(bool)だと考える。ただし、WindowsAPIがそう考えていない場合は仕方有りませんが。
- 論理型の真偽評価は比較を使用しない。BOOL型をTRUEと比較するなんて以ての外です。
- ヌルポインタチェックはNULLと比較する。
- 代入式を評価しない。代入後の変数を評価する。
- ローカル変数は使用する直前に宣言する。
- 引数、変数、戻り値、関数のconst宣言は厳密に、積極的に行う。
- switchのcaseラベルフォールスルーは濫用しない。
- switchのdefaultラベルは必ず付ける。
- switchのdefaultラベルはなるべく最後に置く。
- for()の括弧内でループ制御に関係のない処理をしない。ループで行う処理は{}内に書きましょう。
- 評価順序を明確にする()は積極的に付ける。
- 三項演算子の条件式が演算式の場合は()で囲む。
- 比較演算子は >, >= よりも <, <= を優先して使用する。
- 変更に関してはコメントを残す。
以下のような形を採っています。(前例がたくさんありますのでソースを参照してください)
- 元のコードをコメントとして残す。
- 変更行にコメントを残す。(小さな変更の場合推奨)
- 関数化した、ファイル分割したなど大きな単位で移動した場合は、元コードを削除して移動元に移動先のコメントを付ける。
- 環境によって存在しないDLLを使用する場合はLoadLibrary()して使用する。(旧環境での動作を確保するため。den8.cppに前例があるので、参照してください。)
- Doxygen形式のコメントを付ける。細かいフォーマットはコメントを参照してください。
- その他のコメント
- ソースの解説は必要なだけ付けてください。関数、クラスの解説はDoxygenコメントを使用してください。
- パッチを統合したときパッチ番号をコメントとして入れているのでご自分の開発中の利便性意外で日付等を入れる必要はありません。もし入っていても削除しません。
電八公式ページに戻る