Skip to content

Latest commit

 

History

History
71 lines (46 loc) · 5.43 KB

coding-conventions.md

File metadata and controls

71 lines (46 loc) · 5.43 KB
title description
コーディング規約
AlesInfiny Maia OSS Edition のコーディング規約に関する方針を示します。

コーディング規約 {#top}

AlesInfiny Maia OSS Edition (以下 AlesInfiny Maia )では、一般に広く採用されている規約に準拠し、必要に応じて最低限のカスタムルールを加えることを基本方針とします。 ゼロから独自規約を作成することは、以下のような問題があるため推奨しません。

  • 規約作成にかかる負荷が大きい
  • 必要な規約の漏れが発生しやすい
  • 機械的なチェックの仕組みを作りにくい

AlesInfiny Maia で採用している規約 {#style-guide}

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 を利用してコーディング規約の自動チェックを行っています。 コーディング規約の内容および静的コード解析ツールの詳しい設定方法については、以下のページとサンプルアプリの実装を確認してください。

AlesInfiny Maia でカスタマイズしている規約 {#custom-conventions}

AlesInfiny Maia では上記に示した基本のコーディング規約に加えて、以下に示すカスタマイズした規約を採用しています。

  • Java アプリケーション

    • Checkstyle プラグイン

      Checkstyle の規約をカスタマイズする場合、 Checkstyle プラグインが読み込むインプットファイルを編集します。具体的な方法については こちら を参照ください。 Checkstyle プラグインでカスタマイズする規約は以下の通りです。

      • IllegalCatch :material-open-in-new:{ target=_blank }

        汎用検査例外を含む特定の例外のキャッチを禁止します。

        汎用的な例外をキャッチしてしまうと、具体的な例外が隠蔽されてしまい、原因の特定が難しくなります。 汎用的な例外ではなく、具体的な例外のみをキャッチするように本規約を設けます。