[[Program/Java]] *Java コーディング規約 [#ycdd084d] ** 規約自動チェック&自動フォーマット [#nad5303a] -Google ベースの Check Style 設定ファイル --&ref(JavaChecks.xml); -Google ベースの フォーマッター設定ファイル --&ref(JavaFormat.xml); -Google ベースの保存時のアクション設定 以下、Eclipse 「設定」の Java→エディター→保存アクションの設定 ■ソース・コードのフォーマット(S) ●すべての行をフォーマット(L) ○編集した行をフォーマット(E) フォーマッターページでフォーマッター設定を構成してください。 ■インポートの編成(I) インポートの編成ページでインポートの編成設定を構成してください。 ■追加アクション(T) ・非修飾フィールド・アクセスに 'this' 修飾子を追加します ・制御ステートメント本文をブロックに変換します ・Convert 'for' loops to enhanced 'for' loops ・private フィールドへ final 修飾子を追加 ・final 修飾子をメソッド・パラメーターに追加 ・final 修飾子をローカル変数に追加 ・可能な場合はラムダを使用 ・丸括弧内に式を入れます ・欠落している '@Override' 注釈を追加 ・欠落している '@Override' 注釈をインターフェース・メソッドの実装へ追加 ・欠落している '@Deprecated' 注釈を追加 ・不要なキャストの除去 ・不要な '$NON0-NLS$' タグを除去 ・すべての行末の空白を除去 ・インデントの訂正 Java のコーディング規約として ---- **Java のコーディング規約 [#rb9252c6] +Code Conventions for the Java Programming Language (Sun が 1999年に作成) +Google Java Style が有名。Sun の規約は古く、Google のものをベースとした方が良いと思われる。 が有名であり、いずれも checkstyle (規約エラーを検出できるツール)用の 設定ファイルが用意されています。 2018年現在、Google Java Style を基本とし、 同 checkstyle の設定ファイルを利用した方が良いと思いますが、 世の中のコードを見て若干、変更した方が良い点があります。 (いくつかは、意見が分かれますが・・・) そこで、Google Java Style をベースに少し設定を変更した ファイルを置いておきます。 &ref(JavaChecks.xml); **Check Style の設定について [#q6228327] 本ページで公開している Check Style の設定ファイルは、 Google Java Style より、下記点を変更している。 ** Google Java Style からの変更点 [#hac1c196] | ''グループ'' | ''項目'' | ''変更前'' | ''変更後'' | ''変更理由'' | |Javadoc コメント->Summary Javadoc |period | - |設定OFF|日本語の場合、「。」を使用するため。 | |サイズ違反->行の最大長 |tabWidth | 8| 4 |(※1) | |空白->File Tab Character |- |- |設定OFF |(※1) | |その他->TreeWalker |tabWithd | 8| 4 |(※1) | |その他->インデント |全般 |- |2->4, 4->8 に変更 |(※1) | ※1) インデントとして4タブ利用のため。(Google Checks は 2空白) ---- ** Tab vs 空白 について [#pbe91c0e] -Tab のメリット --入力が早い。 --ファイルサイズが小さい。 --インデントが正しく構成される。 ---空白の場合、空白の過不足等が発生する可能性あり ---タブ、空白を表示させた際、タブは1つの表記で明確。空白の場合は個数を数える必要あり。 -空白のメリット --エディタによらず、同じ表示となる。 --Excel にコードを張り付けやすい。(タブだとカラムが変わってしまう。) --github 上 空白のコードが若干多い。 --空白を使う人は年収が高め(らしい。) -その他 --2空白のコードは汚くなる傾向にあるように見える(※1) ※1) OSS を見ると(統計までは取れていないが) 2空白を使用しているコードは、ネストが深く、1関数が長くなる傾向にある。