コードのフォーマットに関するガイドライン

Python のコードは PEP 8 に準拠していますが、より厳格な Black コードスタイル を使用しています。

以下のリストは、C++ GROMACS コードの一般的な書式設定/インデント規則を示しています。

  • 基本的なインデントは4スペースです。

  • 適切な長さの行を維持してください。各行の長さを120文字以下にしてください。もし、非常に深いインデントになってしまう場合は、コードを関数に分割することを検討してください。

  • スペースのみを使用してください。ほとんどのテキストエディタは、タブキーを押したときにスペースを生成するように設定できます。特にスペースと組み合わせて使用する場合、タブは、設定が完全に一致しないコンテキスト(例:git diff の出力)でインデントを壊しやすくなります。

  • 末尾に空白文字は含まないでください。

  • 常にブラケットを使用してブロックを区切る。 if ブロックや類似の構造内であっても、単一のステートメントしかない場合でも構いません。

  • 括弧は、それぞれ別の行に記述する必要があります。ただし、C++クラス内の短い1行のインライン関数は、1行に記述できます。

  • スペースを多用してください。

  • extern "C" および namespace ブロックはインデントされていませんが、それ以外のすべてのブロック(クラスや switch の本体を含む)はインデントされています。 namespace ブロックには、その名前を含む閉じコメントが必要です。

Additionally:

  • すべてのソースファイルおよびその他の重要なスクリプトには、あらかじめ決められた形式とライセンス情報を含む著作権ヘッダーを含める必要があります(既存のファイルを確認してください)。コードが|Gromacs|ソースリポジトリに存在していた期間については、著作権者は「|Gromacs|開発チーム」である必要がありますが、以前の期間には他の著作権者が存在する可能性があります。

  • ファイルを更新する際には、現在の年を著作権年として記載されていることを確認してください。

上記のほとんどのガイドラインは、clang-formatという自動ソースコードフォーマットツールを使用して適用されます。著作権に関するガイドラインは、別のPythonスクリプトによって適用されます。詳細は、:doc:`code-formatting`を参照してください。これらのスクリプトの性質上(それらはすべてまたは何もフォーマットのみを行うため)、記載されているすべてのフォーマットルールが同時に適用されます。

一貫したフォーマットを適用することには、いくつかの利点があります:

  • ほとんどのフォーマットに関する問題については、手動でのコードレビューは不要であり、人々はコンテンツに集中できます。

  • 別の自動スクリプト(下記を参照)を使用することで、シンボルの名前変更やパラメータの変更などのリファクタリング後に、手動でフォーマットを修正する必要なく、フォーマットを再設定することができます。

多くのIDEは``.clang-format``構成ファイルを検出し、コードを自動的に整形することができます。しかし、clang-formatの動作はバージョンによって大きく異なるため、当社のスクリプトや自動テストシステムで強制されるものとは、わずかな違いがある可能性があります。