Tag Archive | Netbeans

Netbeans Javaコードスタイル概説 その04

対象IDE:Netbeans 7.3.1

目次

  • その01
    • 序文
  • その02
    • タブとインデント
    • 位置揃え
    • 中括弧
  • その03
    • 折り返し
    • 空行
    • スペース
  • その04
    • コメント
    • インポート
    • コード生成

コメント (Comments)

comment

・コメントの書式設定を有効にする (Enable Comments Formatting)

コメント部が再フォーマット処理の対象になるか指定する。
オンにすると、再フォーマット処理によりコメント文中の連続するHTMLスペースが一つにまとめられる。
※ オフにしても自動生成されるコード内のコメント部の清書は行われる。オフにすると後続チェックボックス操作ができなくなるUIはもしかして不適切かも。
デフォルトでは「オン」。

  • ブロック・コメントの書式設定 (Format Block Comments)
    開始「/*」と終了「*/」が同じ行にあるコメントを再フォーマット処理の対象とする。
    /*」「*/」の内側にスペースがなければ入れる。ただし先頭が「/**」なら二番目の*の後に入れる。
    連続するHTMLスペースは一つにまとめられる。
    「//」で始まるコメントは対象外。
    デフォルトでは「オフ」。

※ 行数にかかわらず「/*」で始まるコメントは全て「ブロックコメント」なのでは?

・一般 (General)

  • 先頭に星を追加 (Add Leading Star)
    複数行にわたるコメントで各行先頭にインデントされた「*」を配置する。
    文はスペースを一つ挟んでから始まる。
    デフォルトではオン。
  • 右マージンでテキストを折り返す (Wrap Text At Right Margin)
    コメント文内の単語の切れ目(各種HTMLスペース?)に改行を入れることで、右マージン指定桁数内にコメント行を納めようとする。
    デフォルトではオン。
  • 1行のコメントを折り返す (Wrap One Line Comments)
    /*…*/」による1行コメントを「/*」、コメント本文、「*/」の3行に展開する。
    1行コメントと同じ行にあるステートメントは引きずられる。
    //」によるコメントは対象外。
    デフォルトではオン。
  • 改行を保持する (Preserve new Lines)
    コメント文内の既存の改行を単語間スペースに変えることで、より多くの文字を1行に詰め込もうとする機能を抑止する。
    ※ 折り返し機能オフの時は無効かも?
    デフォルトではオフ。

・Javadoc

Javadoc用ドキュメント記述部の自動生成処理を操作する。

  • 説明の後に空行を追加する (Add Blank Line After Description)
    コメント本文と各種@タグセクションの間に空行を入れる。
    @タグ群がなければ何もしない。
    デフォルトではオン。
  • パラメータの説明の後に空行を追加する (Add Blank Line After Parameter Descriptions)
    @paramセクションの後に空行を入れる。
    デフォルトではオフ。
  • 改行タグの後に空行を追加する (Add Blank Line After Return Tag)
    @return部の後に空行を入れる。
    ※ 「改行」訳は「戻り値」の間違いでは?
    デフォルトではオフ。
  • 空行に”<p/>”を生成する (Generate “<p/>” On Blank Lines)
    空行の代わりに<p/>を使う。<p>ではない。
    連続する複数の空行には複数の<p/>が入る。
    デフォルトではオフ。
  • パラメータの説明を位置揃え (Align Parameter Descriptions)
    個々の@param説明文の頭と後続行を揃える。
    デフォルトではオフ。
  • 戻り値の説明を位置揃え (Align Return Value Descriptions)
    複数行にまたがる@return説明文の頭を揃える。
    デフォルトではオフ。
  • 例外の説明を位置揃え (Align Exception Descriptions)
    個々の@throws説明文の頭と後続行を揃える。
    デフォルトではオフ。

インポート (Imports)

import

自動生成されるimport文に関する各種設定。
メニュー「ソース」内の「インポートを修正」や「インポートの編成」の結果に影響する。

※ 「スター・インポート」とは、「.*;」で終わるオンデマンドのimport文の事

  • 単一クラスのインポートの使用 (Use Single Class Imports)
    import文に「*」無しの正準名を書くことでソース内の各名前を解決させる。
  • パッケージのインポートの使用 (Use Package Imports)
    import文に「*」付きパッケージ名もしくは型名を書くことで、ソース内の各名前をオンデマンドに解決させる。
  • 完全限定名の使用 (Use Fully Qualified Names)
    import文を使わずにソース内の各名前を完全限定名(FQN)で解決させる。
    ソース内で定義されるクラスも完全限定名で表現される。

デフォルトでは「単一クラスのインポートの使用」が選択される。

「単一クラスのインポートの使用」が選択された場合、さらに下記の細かな指定が可能。

  • 内部クラスをインポート (Import Inner Classes)
    java.util.Map.Entry」のような、トップレベルでない型名をimport文に記述しようとする。
    この例の場合、ソースコード中には囲みクラス「Map」を省略して「Entry」と書くことが出来る。
    内部クラスのみならず、staticメンバ型も対象となる。
    デフォルトはオフ。
  • スター・インポートを使用するクラス数 (Class Count To Use Star Import)
    同じパッケージに属するクラスが記述されたimport文の数が閾値を超えたら、「*」付きスター・インポートを使い一つのimport文にまとめる。
    デフォルトはオフだがあらかじめ閾値5クラスの設定になっている。
  • 静的スター・インポートを使用するメンバー数 (Members Count To Use Static Star Import)
    同じクラスに属するメンバが記述された静的import文の数が閾値を超えたら、「*」付き静的スター・インポートを使い一つのimport文にまとめる。
    デフォルトはオフだがあらかじめ閾値3メンバの設定になっている。
  • スター・インポートを使用するパッケージ (Packages To Use Star Import)
    無条件にスターインポートを使うパッケージ名をリストで指定する。
    *欄にチェックが付くと、再帰的な下位サブパッケージも指定対象となる。

・レイアウトをインポート (Import Layout)

import文の出現順に関する各種設定。基本は辞書順。
(※ ここでimportを動詞(…をインポート)として訳すのはたぶん不適切。)

  • 静的インポートを分割 (Separate Static Imports)
    静的import文とそうでないimport文を別グループに分ける。順序並びは、それぞれのグループの中での辞書順となる。
    オンにした場合のみ、リストボックスでグループ間の出現順の設定が可能。チェックボックスは静的(static)か否かの区別。
    任意のパッケージ名を独立したグループとして追加することも可能。
    デフォルトではオフ。
  • グループを分割 (Separate Groups)
    上記指定で分割したインポートグループ間に空行を入れるか指定する。
    デフォルトではオン。

※ 「静的import文 (static import文)」はJDK5からの新言語仕様。JUnitでテストコードを書くときなどには欠かせないほど便利。


コード生成 (Code Generation)

cgen1

クラス内の各メンバの出現順を指定する。

メニュー「ソース」→「メンバの編成」実行時に反映される。

・メンバーのソートの順序 (Members Sort Order)

各メンバの属するカテゴリを用いてソート順を指定する。各メンバはカテゴリ毎にまとめられる。

デフォルトのカテゴリ順は以下の通り。

  • 静的フィールド (Static Fields)
    ※ クラス変数のこと
  • 静的初期化子 (Static Initializers)
  • 静的メソッド (Static Methods)
    ※ クラス・メソッドのこと
  • フィールド (Fields)
    ※ インスタンス変数のこと
  • インスタンス初期化子 (Instance Initializers)
  • コンストラクタ (Constructors)
  • メソッド (Methods)
    ※ インスタンス・メソッドのこと
  • 静的クラス (Static Classes)
    ※ staticメンバ型のこと
  • クラス (Classes)
    ※ 内部クラスのこと

・メンバーを可視性でソート (Sort Members By Visibility)

各カテゴリ内でのメンバ順にアクセス可能性修飾子を反映させる。
デフォルトはオフ。

デフォルトのソート順は以下の通り。リスト操作でソート順を変更させることも可能。

  • public
  • private
  • protected
  • デフォルト

・挿入ポイント (Insertion Point)

メニュー「ソース」→「コードを挿入」などで挿入されるフィールドやメソッドを、ソース内のどこに挿入するか指定する。

デフォルトは「キャレットの場所」。

  • カテゴリの最後 (Last In Category)
    挿入コードが属すべきカテゴリの一番後に挿入する。
  • カテゴリの最初 (First In Category)
    挿入コードが属すべきカテゴリの一番前に挿入する。
  • キャレットの場所 (Caret Location)
    カーソル以降でカーソル位置に一番近い場所に挿入する。各種ソート指定は無視される。
広告

Netbeans Javaコードスタイル概説 その03

対象IDE:Netbeans 7.3.1

目次

  • その01
    • 序文
  • その02
    • タブとインデント
    • 位置揃え
    • 中括弧
  • その03
    • 折り返し
    • 空行
    • スペース
  • その04
    • コメント
    • インポート
    • コード生成

折り返し (Wrapping)

cr

改行の自動挿入に関する各種設定。

・設定項目

  • キーワードの拡張/実装 (Extends/Implements Keyword)
    extends および implements の前に挿入される改行。
    ※ “extends”, “implements” は無理に和訳しない方がよいかも。
    デフォルトは「なし」。
  • 一覧の拡張/実装 (Extends/Implements List)
    implements句の各interface名間コンマ「,」の直後に挿入される改行。
    「implementsリストを位置揃えする」設定になっている場合は、implementsの後に改行が挿入されることもある。
    ※ やはり “extends”, “implements” は訳さない方がよい。
    デフォルトは「なし」。
  • メソッド・パラメータ (Method Parameters)
    メソッド仮引数間コンマ「,」の直後に挿入される改行。
    デフォルトは「なし」。
  • メソッドの呼び出し引数 (Method Call Argumants)
    メソッド呼び出し引数間コンマ「,」の直後に挿入される改行。
    デフォルトは「なし」。
  • 注釈の引数 (Annotation Arguments)
    アノテーション引数間コンマ「,」の直後に挿入される改行。
    デフォルトは「なし」。
  • 連鎖されたメソッド呼び出し (Chained method Calls)
    ドット「.」を挟む連鎖したメソッド呼び出し間に挿入される改行。
    ドットの前後どちらに改行が入るのかは後述の詳細チェックボックスで設定する。
    連鎖フィールド参照は対象外。
    デフォルトは「なし」。
  • キーワードをスロー (Throws Keyword)
    メソッド定義部「throws」の前に挿入される改行。
    ※ throws は動詞として訳さない方がよいような。
    デフォルトは「なし」。
  • スロー・リスト (Throws List)
    throws節の各例外名間コンマ「,」後に挿入される改行。
    デフォルトは「なし」。
  • 配列初期化子 (Array Initializer)
    配列初期化子の「{」直後および各「,」の後に挿入される改行。
    デフォルトは「なし」。
  • tryリソース (Try Resources)
    try文の複数リソース定義間「;」の直後に挿入される改行。
    デフォルトは「なし」。
  • 分離catchタイプ (Disjunctive Catch Types)
    複数catch節間「|」の直後に挿入される改行。
    デフォルトは「なし」。
  • for (For)
    for()内2カ所の「;」の後に挿入される改行。
    デフォルトは「なし」。
  • for文 (For Statement)
    for文と制御対象ステートメントの間に挿入される改行。
    中括弧が自動生成される場合は無効となる。
    デフォルトは「常時」。
  • if文 (If Statement)
    if文と制御対象ステートメントの間に挿入される改行。
    中括弧が自動生成される場合は無効となる。
    デフォルトは「常時」。
  • while文 (While Statement)
    while文と制御対象ステートメントの間に挿入される改行。
    中括弧が自動生成される場合は無効となる。
    デフォルトは「常時」。
  • do … while文 (Do … While Statement)
    do文と制御対象ステートメントの間に挿入される改行。
    中括弧が自動生成される場合は無効となる。
    whileの前は常時改行が入る。
    デフォルトは「常時」。
  • 表明 (Assert)
    assert文のオプショナルな「:」の後に挿入される改行。
    デフォルトは「なし」。
  • enum定数 (Enum Constants)
    enum定数名の各定義間コンマ「,」直後に挿入される改行。
    デフォルトは「なし」。
  • 注釈 (Annotations)
    アノテーション指定と後続する各種宣言文の間に挿入される改行。
    複数連続する各種アノテーション間の改行も含まれる。
    デフォルトは「常時」。
  • 二項演算子 (Binary Operators)
    二項演算子を挟む二つの式間に挿入される改行。
    二項演算子の前後どちらに改行が入るのかは後述の詳細チェックボックスで設定する。
    デフォルトは「なし」。
  • 三項演算子 (Ternary Operators)
    三項演算子式に2カ所挿入される改行。三項演算子式に改行を二つ挿入して3行にわけようとする。
    二つある三項演算子記号「?」「:」の前後どちらに改行が入るのかは後述の詳細チェックボックスで設定する。
    デフォルトは「なし」。
  • 代入演算子 (Assignment Operators)
    代入演算子の直後に挿入される改行。「+=」のような複合代入演算子も対象。
    デフォルトは「なし」。

※ tryリソースと分離catchはJDK7からの新言語仕様。

・選択肢

上記の各項目は次の選択肢を持つ。

  • 常時 (Always)
    積極的に改行を挿入する。
  • 長い場合 (If Long)
    行が長くて右マージン指定内に収まらないと判断したときのみ改行を挿入する。
    あまり正確に桁数を計算しているわけではなさそう…。
  • なし (Never)
    改行を挿入しない。しかし、既に分割された行がまとめられることはない。

・細項目

さらに細かなチェックボックスを有する設定項目も若干ある。いずれのチェックボックスも、上記設定で折り返しが発生しない場合は無効。

  • 連鎖したメソッド呼び出し内のドットの後で折り返し(Wrap After Dot In Chained Method Call)
    オンにすると連鎖メソッド呼び出し間のドット「.」の後に、オフだと前に改行を挿入しようとする。
    デフォルトでオン。
  • 二項演算子の後で折り返し (Wrap After Binary Operators)
    オンにすると二項演算子の後に、オフだと前に改行を挿入する。
    デフォルトでオフ。
  • 三項演算子の後で折り返し (Wrap After Ternary Operators)
    オンにすると「?」および「:」の後に、オフだと前に改行を挿入する。
    デフォルトでオフ。

空行 (Blank Lines)

blank

ソース中の各セクション間に自動挿入される空行の数を設定する。

先行セクション後部の空行数と後続セクション前部の空行数を比較し、空行数の多い方の設定がセクション間の空行数に反映される。空行数の足し算は行われない。

※ クラスヘッダ後部などで若干の例外あり。

・設定項目

  • パッケージ化前 (Before Package)
    package文の前の空行数。
    デフォルトは0行。
  • パッケージ化後 (After Package)
    package文の後の空行数。
    デフォルトは1行。
  • インポート前 (Before Imports)
    import文セクションの前の空行数。
    デフォルトは1行。
  • インポート後 (After Imports)
    import文セクションの後の空行数。
    デフォルトは1行。
  • クラスの前 (Before Class)
    各種型定義部の前の空行数。
    デフォルトは1行。
  • クラスの後 (After Class)
    各種型定義部の後の空行数。
    ※ 想定される後続は、別クラス定義や囲みクラスの別メンバ定義など。
    デフォルトは0行。
  • クラス・ヘッダーの後 (After Class Header)
    クラス本体開始記号「{」の後の空行数。
    後続セクションの前部空行数は無視される。
    クラス本体が0行の場合は無視される。
    デフォルトは1行。
  • 匿名クラスのヘッダーの後 (After Anonymous Class Header)
    匿名クラス本体開始記号「{」の後の空行数。
    後続セクションの前部空行数は無視される。
    匿名クラス本体が0行の場合は無視される。
    デフォルトは0行。
  • クラスの閉じ括弧の前 (Before Class Closing Brace)
    クラス定義終了記号「}」の前の空行数。
    デフォルトは0行。
  • 匿名クラスの閉じ括弧の前 (Before Anonymous Class Closing brace)
    匿名クラス定義終了記号「}」の前の空行数。
    デフォルトは0行。
  • フィールドの前 (Before Field)
    各々のフィールド定義の前の空行数。
    デフォルトは0行。
  • フィールドの後 (After Field)
    各々のフィールド定義の後の空行数。
    デフォルトは0行。
  • メソッドの前 (Before Method)
    メソッド定義部の前の空行数。
    デフォルトは1行。
  • メソッドの後 (After Method)
    メソッド定義部の後の空行数。
    デフォルトは0行。

スペース (Spaces)

sp

各所に自動挿入されるスペースに関する設定。

・キーワードの前 (Before Keywords)

  • ”while”
    }」とそれに続く「while」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “else”
    }」とそれに続く「else」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “catch”
    }」とそれに続く「catch」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “finally”
    }」とそれに続く「finally」との間に挿入されるスペース。
    デフォルトは「オン」。

・丸括弧の前 (Before Parentheses)

  • メソッド宣言 (Method Declaration)
    メソッド宣言におけるメソッド名と後続の「(」の間に挿入されるスペース。
    デフォルトは「オフ」。
  • メソッド呼び出し (Method Call)
    メソッド呼び出しにおけるメソッド名と後続の「(」の間に挿入されるスペース。
    デフォルトは「オフ」。
  • “if”
    「if」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • “for”
    「for」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • “while”
    「while」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • “try”
    「try」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • “catch”
    「catch」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • “switch”
    「switch」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • “synchronized”
    「synchronized」と後続の「(」の間に挿入されるスペース。
    デフォルトは「オン」。
  • 注釈パラメータ (Annotations Parameter)
    アノテーション名と後続の「(」の間に挿入されるスペース。
    デフォルトは「オフ」。

※ 「メソッド」にはコンストラクタ一般も含まれる。

・演算子の周囲 (Around Operators)

  • 単項演算子 (Unary Operators)
    単項演算子の前後に挿入されるスペース。
    ただし数値リテラル直前の「-」は特別扱いとなり無視される。
    式の最後が「++」や「--」の後置演算子の場合、演算子の前にのみスペースが入る。(※ 厳密にはこれらは単項演算子ではない)
    デフォルトは「オフ」。
  • 二項演算子 (Binary Operators)
    二項演算子の前後に挿入されるスペース。
    ただしinstanceof演算子の前後は常にスペースが入る。
    デフォルトは「オン」。
  • 三項演算子 (Ternary Operators)
    ?」および「:」の前後に挿入されるスペース。
    デフォルトは「オン」。
  • 代入演算子 (Assignment Operators)
    =」、「==」、その他「+=」のような復号代入演算子の前後に挿入されるスペース。
    デフォルトは「オン」。
  • 注釈値代入演算子 (Annotation Value Assignment)
    アノテーション引数の「=」の前後に挿入されるスペース。
    デフォルトは「オン」。

※ 演算子が連続するところは2個以上の連続するスペースが挿入される場合がある。

・左中括弧の前 (Before Left Braces)

  • クラス宣言 (Class Declaration)
    クラス本体定義部先頭の「{」の前に挿入されるスペース。
    デフォルトは「オン」。
  • メソッド宣言 (Method Declaration)
    メソッド本体定義部先頭の「{」の前に挿入されるスペース。
    デフォルトは「オン」。
  • “if”
    「if()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “else”
    「else」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “while”
    「while()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “for”
    「for()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “do”
    「do」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “switch”
    「switch()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “try”
    「try」もしくは「try()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “catch”
    「catch()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “finally”
    「finally」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • “synchronized”
    「synchronized()」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • 静的初期化子 (Static Initializer)
    「static」と後に続く「{」との間に挿入されるスペース。
    デフォルトは「オン」。
  • 配列初期化子 (Array Initializer)
    配列初期化子の「{」の前に挿入されるスペース。
    new int[] {1, 2, 3}」のような式に影響する。
    int[] x={1, 2, 3}」のような式には影響しない。
    デフォルトは「オフ」。

・丸括弧の内側 (Within Parentheses)

(」の直後および「)」の直前にスペースを入れる。

※ 丸括弧でない括弧の設定もあり。

  • 丸括弧 (Parentheses)
    一次式の括弧式「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • メソッド宣言 (Method Declaration)
    メソッド宣言で仮引数を囲む「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • メソッド呼び出し (Method Call)
    メソッド呼び出しで引数を囲む「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “if”
    if文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “for”
    for文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “while”
    while文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “switch”
    switch文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “try”
    try文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “catch”
    catch文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • “synchronized”
    synchronized文「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • 型キャスト (Type Cast)
    型キャスト演算子「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • 注釈 (Annotation)
    アノテーション引数を囲む「()」の内側に挿入されるスペース。
    デフォルトではオフ。
  • 中括弧 (Braces)
    配列初期化子を囲む「{}」の内側に挿入されるスペース。
    デフォルトではオフ。
  • 配列初期化子の角括弧 (Array Initializer Brackets)
    配列サイズ/添字指定を囲む「[]」の内側に挿入されるスペース。
    デフォルトではオフ。

・その他 (Other)

  • カンマの前 (Before Comma)
    カンマ「,」の前に挿入されるスペース。
    デフォルトではオフ。
  • カンマの後 (After Comma)
    カンマ「,」の後に挿入されるスペース。
    デフォルトではオン。
  • セミコロンの前 (Before Semicolon)
    セミコロン「;」の前に挿入されるスペース。
    デフォルトではオフ。
  • セミコロンの後 (After Semicolon)
    セミコロン「;」の後に挿入されるスペース。
    デフォルトではオン。
  • コロンの前 (Before Colon)
    コロン「:」の前に挿入されるスペース。
    デフォルトではオン。
  • コロンの後 (After Colon)
    コロン「:」の後に挿入されるスペース。
    デフォルトではオン。
  • 型キャストの後 (After Type Cast)
    型キャスト「)」の直後に挿入されるスペース。
    デフォルトではオン。

※ 「セミコロン」(;)はtryリソースの「()」およびfor文「()」内部のセミコロンを指す物である。ステートメント末尾のセミコロンは対象外。

※ 「コロン」(:)はfor-each文「()」内部およびassert文のコロンを指すものである。ラベル、case句、三項演算子のコロンは対象外。

※ 7.3.1 版ではfor-each内部のコロン周囲のスペース挿入処理にバグ?

Netbeans Javaコードスタイル概説 その02

対象IDE:Netbeans 7.3.1

目次

  • その01
    • 序文
  • その02
    • タブとインデント
    • 位置揃え
    • 中括弧
  • その03
    • 折り返し
    • 空行
    • スペース
  • その04
    • コメント
    • インポート
    • コード生成

タブとインデント (Tabs And Indents)

indent

※ 「行折返し」までの項目は、各言語用エディタ間で設定を共有することが可能。

・タブをスペースに展開 (Expand Tabs to Spaces)

この設定はTABキー押下によるインデント指示、および自動生成されるコードのインデント等に影響する。ファイル読み込み時の水平タブはこの設定の影響を受けずに水平タブのまま読み込まれる。
このチェックボックスをオンにすると、TABキー押下時に何個かのスペース(U+0020)をテキストに挿入することでインデント字下げを実現しようとする。
オフにするとTABキー押下時に水平タブ(U+0009)をテキストに挿入してインデント字下げを実現しようとする。水平タブのみでインデントを実現できない場合はスペースも混ぜて補おうとする。
インデントが画面上何桁になるかは、インデントの各種設定やTABキーを押した箇所の前後の状況によって決まる。
デフォルトでは「オン」

・インデントのスペース数 (Number of Spaces per Indent)

インデント1単位あたりの字下げ幅をスペース数換算で指定する。
ハーフインデントという操作が出てきたりするので、おそらく偶数が望ましい。
デフォルトは4スペース。

・タブのサイズ (Tab Size)

水平タブ(U+0009)により実現されるタブストップの単位をスペース数換算で指定する。
デフォルトは8桁。

・右マージン (Right Margin)

テキストエディタの右側で指定桁数到達を示す赤い線の位置を指定する。後述の各種折り返し機能に影響する。
プロポーショナルフォントや全角和文が交じる行ではあまり正確に機能しない。
※ 余白を意味する「マージン」とは実はなんの関係もないかも?
デフォルトは80桁。

・行折り返し (Line wrap)

1行がウィンドウサイズに収まらない場合に、収まらない文字列をどう表示するか指定する。

  • オフ (Off)
    表示を切る。水平スクロールバーを使えば切れた箇所を確認することが可能。
  • 単語の後 (After words)
    単語の切れ目で折り返し、次の行として表示する。単語の並びによってはウィンドウ枠より若干手前で折り返すことになる。
  • 任意の場所 (Anywhere)
    文字の切れ目で次の行に折り返す。先行する行はウィンドウ幅を目一杯使うよう表示される。

デフォルトは「オフ」

・継続インデント・サイズ (Continuation Indentation Size)

1ステートメントの途中で改行した時の、分割される後続行のインデント量。
ステートメント行本来のインデント位置が起点となる。
デフォルトは8桁。

・ラベルのインデント (Label Indentation)

ラベル付きステートメント(Labeled Statement) 内部のインデント量。ラベル名に後続するステートメント部の開始位置に影響を及ぼす。
ラベル付きステートメント行本来のインデント位置が起点となる。
(※ 必ずしもラベル名先頭が基準では無い)
ラベル付きステートメント以降のステートメントにはインデント量は持ち越されない。
ラベル名とステートメント部が干渉しない限り、ラベル付きステートメントを1行に収めようとする。
デフォルトは0桁。

・ラベル絶対インデント (Absolute Label Indentation)

ラベル付きステートメントのラベル名開始位置を行頭に固定する。
ラベル名後続ステートメントのインデント量には影響しない。
この設定がオンの場合、ラベル付きステートメントのラベル名とステートメント部を強制的に別行に分離する方法は無い模様。
デフォルトは「オフ」。

・最上位クラスのメンバーをインデント (Indent Top Level Class Members)

クラスその他の各種型宣言に対し、その子要素宣言がインデントされる。
※ 最上位クラスでない各種型宣言の内部にもインデントは働くので、現時点でこの項目名は若干おかしい。
デフォルトは「オン」。

・switch文でcase文をインデント (Indent Case Statements in Switch)

switch文の先頭に対しcase句がインデントされるか否かを設定する。
デフォルトは「オン」。


位置揃え (Alignment)

pos

・改行 (New Lines)

  • else
  • finally
  • while
  • 修飾子の後 (After Modifiers)
  • catch

各種キーワードの前に「}」がある場合、改行を挿入してインデントを合わせる。

宣言中の各種修飾子並び (public, private, protected, static, abstract, final, native, synchronized, transient, volatile, strictfp, etc.) の後に改行を挿入し、後続部は継続行としてインデントされる。

while”はdo-while文の設定であり、ただのwhile文は無関係。

デフォルトでは全て「オフ」

・複数行の位置揃え (Multiline Alignment)

既に改行された継続行のインデント量を、各種文脈に従った物に揃える。
継続行でないものには影響しない。

  • メソッド・パラメータ (Method Parameters)
    メソッド定義一番目の仮引数の定義開始位置に合わせる。
  • メソッド呼び出しの引数 (Method Call Arguments)
    メソッド呼び出し一番目の引数の登場位置に合わせる。
  • 注釈の引数 (Annotation Arguments)
    アノテーションの一番目の引数の登場位置に合わせる。
  • implementsリスト (Implements List)
    implements節で一番目のinterface名登場位置に合わせる。
  • throwsリスト (Throws List)
    throws節で一番目の例外名登場位置に合わせる。
  • tryリソース (Try Resources)
    try節で一番目のリソース定義登場位置に合わせる。
  • 分離catchタイプ (Disjunctive Catch Types)
    一番目のcatch節引数登場位置に合わせる。
  • 配列初期化子 (Array Initializer)
    一番目の配列データ登場位置に合わせる。
  • 二項演算子 (Binary Operators)
    左辺の登場位置に合わせる。
  • 三項演算子 (Ternary Operators)
    条件部(?の前部)の登場位置に合わせる。
  • 代入 (Assignment)
    被代入変数の登場位置に合わせる。
  • for (For)
    for変数宣言の登場位置に合わせる。
  • 括弧付け (Parenthesized)
    最も内側の開き括弧直後に合わせる。

※ 「tryリソース」や「分離catch」はJDK7からの新しい言語仕様。

デフォルトでは全て「オフ」。


中括弧 (Braces)

brace

・中括弧の配置 (Braces Placement)

開き中括弧「{」の配置を設定する。

  • クラス宣言 (Class Declaration)
  • メソッド宣言 (Method Declaration)
  • その他 (Other)
    各種制御文や初期化子に伴う中括弧「{」など。

それぞれが以下の選択肢を持つ。

  • 同じ行 (Same Line)
    {」の前に改行を入れない。
  • 改行 (New Line)
    {」の前に改行を挿入し、先行行とインデントを合わせる。
  • 半分インデントされた改行 (New Line Half Indented)
    {」の前に改行を挿入し、基本インデント量の半分だけインデントする。
  • インデントされた改行 (New Line Indented)
    {」の前に改行を挿入し、インデントする。

デフォルトは全て「同じ行」。

・特殊な”else if”の処理 (Special “else if” Treatment)

Javaに「else if」というキーワードは存在せず、言語仕様の構文木を素直に解釈するのならば「else」の後に改行してネストを一つ下げてから「if」を書くべき。(という主張はおそらくかなりの少数派…)
設定をオンにすると、このような「else if」を1行にまとめてくれる。ただし、既にelse-if間に「{」が入っていると無効。
設定がオフの場合、「else」と「if」の間に強制的に「{」が挿入され、改行とインデントが行われる。

デフォルトは「オン」。

・中括弧の生成 (Braces Generation)

省略可能な箇所の中括弧「{}」に関する設定を行う。

  • if
  • for
  • while
  • do ... while

これらの項目はそれぞれ以下の選択肢を持つ。

  • 生成 (Generate)
    中括弧と改行を積極的に付けようとする。
  • そのまま残す (Leave Alone)
    既存ソースの清書処理に際して、中括弧を足そうとも削ろうともしない。
  • 削除 (Eliminate)
    単一ステートメントのみで構成されるブロックなど、中括弧を消せる場所は積極的に削ろうとする。
    中括弧前後で分離していた行はそのまま分離が保持される。

デフォルトは全て「生成」。

Netbeans Javaコードスタイル概説 その01

対象IDE:Netbeans 7.3.1

序文

統合開発環境 Netbeans は、オプション設定でJava用ソースコードエディタのフォーマット整形機能を細かく設定することができます。
(オプション設定画面からタブ「エディタ」→タブ「フォーマット」)

ここであなた好みのコーディングスタイルおよび規約を設定することにより、Netbeansが自動生成する各種ソースコードにそのスタイルを反映させることができます。
また、メニュー「ソース」内の「フォーマット」「インポートを修正」「インポートの編成」「メンバーの編成」といった、既存のソースコードを清書する機能にも、スタイルが反映されます。
リアルタイムにソースコードを監視しエディタ利用者に色でサジェストガイドする「ヒント機能」にも、スタイルは反映されます。

さてこのスタイル設定、プレビューウィンドウが確認しづらかったり、サンプルプログラムが古いままだったり、インストール時のデフォルト設定に戻す機能が無かったり、和訳が微妙な箇所があったりで、色々と試行錯誤しながらスタイルを固めていく作業がとても面倒な仕様になっています。そのようなわけで、Netbeans 7.3.1 のJava用コードスタイル設定各項目の内容をざっと解説してみました。

ちなみに Netbeans は、全テキストエディタ共通、各言語用エディタ、個別のプロジェクト、と階層的にスタイルを設定できるようになっています。

目次

  • その01
    • 序文
  • その02
    • タブとインデント
    • 位置揃え
    • 中括弧
  • その03
    • 折り返し
    • 空行
    • スペース
  • その04
    • コメント
    • インポート
    • コード生成