コーディング規約 - KatLab-MiyazakiUniv/etrobocon2024 GitHub Wiki
プルリクエストを出す時とレビューをする時は,以下の項目を満たしていることを確認する.
前提
- コンパイルは通っているか
- テストは通っているか
- プルリクエストはチケットと対応しているか(タイトルの先頭が「closed #[チケット番号]」となっているか)
ファイル
- ファイルにドキュメントコメントを記述しているか(ファイル名,簡潔な説明,作成者(GitHubのユーザ名)を含むこと)
- ヘッダファイルの各関数に,ドキュメントコメントを記述しているか
- ヘッダファイル名は,「クラス名.h」になっているか
- ソースファイル名は,「クラス名.cpp」になっているか
- ヘッダファイルにインクルードガードを記述しているか(重複しないマクロ名になっているか)
- ソースファイルは,同クラスのヘッダファイルのみをインクルードしているか
クラス
- クラス名のスペルは正確か
- クラス名はアッパーキャメルケースになっているか(例:ClassName)
- クラス名は名詞になっているか
- メンバー変数のすべてがコンストラクタで初期化されているか
- メンバー変数の数は適切か(5個以下が望ましい)
- メンバ関数の数は適切か(1つのクラスに多くの機能を持たせていないか)
- publicを上側に,privateを下側に記述しているか
- publicとprivateのメンバーはそれぞれ,変数→コンストラクタ→関数の順に記述しているか
関数
- 関数名のスペルは正確か
- 関数名はローワーキャメルケースになっているか(例:methodName)
- 関数名は動詞+名詞(名詞は省略可)の形になっているか(例:moveStraight,turn)
- 関数の行数は適切か(40行以内が望ましい)
- 構造体およびクラスを引数に取る関数は,参照型で受け取っているか
- コメントは,適切な箇所に記述されているか(意図が伝わらない処理はないか)
- ループする時は,10mm秒
sleep()
を挟んでいるか
変数
- 変数名のスペルは正確か
- 変数名は,ローワーキャメルケースになっているか(例:variableName)
- 一時的な変数の宣言は処理の直前であるか
定数
- 定数名のスペルは正確か
- 定数名は,アッパースネークケースになっているか(例:CONSTANT_NAME)
テスト
- 各public関数に対応したテストコードはあるか
- テストコードは適切な数あるか(カバレッジ80%以上が望ましい)
- テスト関数名は,(テスト対象の関数名)+Testになっているか(例:addTest)
- テスト関数名とテストケース名はローワーキャメルケースになっているか
- 比較する変数名は,expectedとactualになっているか(例:EXPECTED_DOUBLE_EQ(expected, actual))
コミット
- コミットメッセージの書き方は適切か(例:git commit -m "update:〇〇を変更した")
- fix:バグ修正
- add:新規機能(ファイル)追加
- update:機能修正
- remove:ファイル削除
- refactor: リファクタリングを実施(コメントの修正やフォーマットの適用、テストコードの変更が必要ないコードの修正のみの場合)