コーディン グ規約
このガイドは、SiMa.ai Neat ライブラリに組み込まれるコードに対する貢献ルールを定義します。
言語と API の制約
- C++20 を使用します。
- 公開 API の変更は、意図的かつ最小限に抑えます(
include/*は安定しているものとして扱います)。 - 互換性を損なう変更よりも、後方互換性のある拡張を優先します。
- 内部実装の詳細を、インストールされる/公開されるヘッダーから除外します。
フォーマットとスタイル
- C/C++ のフォーマットは、
clang-format(.clang-formatはリポジトリのルートにあります) を使用して強制します。 - CMake のスタイルは、
scripts/check_cmake_style.pyによって強制されます。 - C/C++ のソースコードにおける重複したインクルードは禁止します。
.editorconfigは、基本的な空白に関するルールを定義します(LF、最終行の改行、末尾の空白なし)。
プッシュする前に実行してください。
bash scripts/check_format.sh --changed-only
bash scripts/check_cmake_format.sh --changed-only
bash scripts/check_duplicate_includes.sh --changed-only
API互換性ポリシー
include/*の下にインストールされているすべてのヘッダーについて、パブリックAPIの互換性は必須要件です。
- 破壊的な変更を含まない追加が推奨されます(新しいオーバーロード、新しいオプションフィールド、新しいAPI)。
- 破壊的なシグネチャの変更(名前の変更/削除/型の変更/パラメータの順序の変更/動作契約の破棄)は、マージ前にレビュープロセスを経る必要があります。
- 破壊的な変更が避けられない場合は、まず段階的な廃止期間を設けることを推奨します(古いシグネチャを維持し、新しい代替手段を追加してから削除します)。