title | description |
---|---|
コーディング規約 |
AlesInfiny Maia OSS Edition のコーディング規約に関する方針を示します。 |
AlesInfiny Maia OSS Edition (以下 AlesInfiny Maia )では、一般に広く採用されている規約に準拠し、必要に応じて最低限のカスタムルールを加えることを基本方針とします。 ゼロから独自規約を作成することは、以下のような問題があるため推奨しません。
- 規約作成にかかる負荷が大きい
- 必要な規約の漏れが発生しやすい
- 機械的なチェックの仕組みを作りにくい
Java アプリケーション、 Vue.js アプリケーションそれぞれで以下の内容を基本のコーディング規約としています。
-
Java アプリケーション
-
Google Java Style :material-open-in-new:{ target=_blank }
Google が提供する、コードのフォーマットに対する規約です。 改行やインデントの規則、メソッド名や変数名の命名規則などを定めています。
-
SpotBugs :material-open-in-new:{ target=_blank } のバグパターン
SpotBugs は静的解析ツールであるとともに、バグパターンと呼ばれるバッドプラクティスや脆弱性に関する定義を持ち、それらのコード中での出現を検知します。 SpotBugs によって検出された、バグパターンに該当するコードを修正することで、より安全なコーディングを実現できます。
-
-
Vue.js アプリケーション
-
Airbnb JavaScript Style Guide :material-open-in-new:{ target=_blank }
Airbnb が GitHub 上に公開している JavaScript のスタイルガイドです。コードのフォーマットに対する規約および、バグを防止するための規約を定めています。あわせて、これらの規約に従うための ESLint の設定が公開されています。
-
Vue.js スタイルガイド :material-open-in-new:{ target=_blank }
Vue.js が公式に提供するスタイルガイドです。 JavaScript に対する規約ではカバーできない Vue 固有の記法について、エラーの発生やアンチパターンを避けるための規約を優先度別に定めています。 これらの規約への違反を検出するための ESLint のプラグインも公式に提供されています。
-
CSS specifications :material-open-in-new:{ target=_blank }
W3C が策定する CSS の標準仕様です。 Stylelint では、この標準仕様に従うための設定が公開されています。
-
上記のコーディング規約は静的コード解析ツールによって自動的にチェックできるようにします。 バックエンド側では、 Checkstyle を使用して Google Java Style への準拠を自動チェックし、 SpotBugs を利用して、 SpotBugs が提供するバグパターンに該当するコードを自動検知します。 加えて、 Visual Studio Code の自動フォーマット機能を利用することで、コーディング中に Google Java Style へ準拠したフォーマットへと自動でコードを修正します。 フロントエンド側では Prettier 、 ESLint 、 Stylelint を利用してコーディング規約の自動チェックを行っています。 コーディング規約の内容および静的コード解析ツールの詳しい設定方法については、以下のページとサンプルアプリの実装を確認してください。
- Checkstyle プラグイン
- SpotBugs プラグイン
- Java formatting and linting :material-open-in-new:{ target=_blank }
- 静的コード分析とフォーマット(Vue.js)
AlesInfiny Maia では上記に示した基本のコーディング規約に加えて、以下に示すカスタマイズした規約を採用しています。
-
Java アプリケーション
-
Checkstyle プラグイン
Checkstyle の規約をカスタマイズする場合、 Checkstyle プラグインが読み込むインプットファイルを編集します。具体的な方法については こちら を参照ください。 Checkstyle プラグインでカスタマイズする規約は以下の通りです。
-
IllegalCatch :material-open-in-new:{ target=_blank }
汎用検査例外を含む特定の例外のキャッチを禁止します。
汎用的な例外をキャッチしてしまうと、具体的な例外が隠蔽されてしまい、原因の特定が難しくなります。 汎用的な例外ではなく、具体的な例外のみをキャッチするように本規約を設けます。
-
-