こんな規約はどうだろう。
設計規約
- モジュールの外部仕様は設計段階ですべて決定する。
- 外部仕様に基づいたテスト仕様を設計段階で記述する。
- 設計の項目は「確定」「未定」「任意」の三状態をとる。
- 設計時に確定できない詳細*1を「未定」として扱う。「未定」の項目は他のモジュールの実装が進んだ後に確定させる。
- 設計時に考慮する必要のない詳細を「任意」として扱う。「任意」の項目は実装者の創意工夫に任せる。
- 「確定」の項目を修正する必要がある場合、他のモジュールに影響がないかどうかを確認し、設計全体を再検討することも考慮する。
コーディング規約
- ソースコードの整形はGNU indent(Cの場合)を用いる。
- オプション設定はプロジェクトリーダーの責任で選択する。
- コンパイル時のエラー・警告はすべて解消する。コンパイル・オプションに'-Wall -Werror'(gccの場合)を加えること。
- 警告項目はプロジェクトリーダーの責任で追加しても良い。
- 静的コード解析ツールを用いて指摘点を整理する。
- 検査項目はプロジェクトリーダーの責任で選択する。
管理規約
- 管理システムを活用する。
- ソースコードやドキュメントの管理にはバージョン管理システムを利用する。
- 仕様やバグの管理にはバグ管理システムを利用する。
- 検査結果やテスト結果の管理にはバグ管理システムを利用する。
- レポジトリにコミットする際に自動でindent, make, lint, unit testを行う。
- make時にエラー・警告が発生した場合、trunkへのマージを拒否する。
- lint, unit test時の指摘はすべてテスト管理システムに登録する。
*1:性能など。