プロジェクト

全般

プロフィール

Javaコーディング作法

Java SE 8環境におけるJavaプログラムのコーディング作法メモ。

はじめに

このページに書くコーディング作法は、プログラミング言語JavaとJava Standard Editionの範囲で開発するプログラムを対象としています。対象バージョンは、Java SE 8とします。

プログラムの入出力

コンソール(標準入力・出力)

コンソール出力をきれいに

プログラムの利用者にとって意味不明な文字列でコンソールを汚さないようにします。
デバッグや動作確認で必要なメッセージは、秩序を持って出力します。
System.out.printlnやprintfの安易な使用はコンソールを汚すので、ロギングAPIを使用するかそれに準じる出力を行います。ロギングAPIを使うときも、利用者がメッセージを峻別できるようルールを明確に定義します。例えば、開発者が使うデバッグ用のログは、レベルFINE, FINER, FINESTとする、等です。

ログ出力

ロギングAPIによって出力先の設定、出力書式の設定、出力の抑制を行いながら必要なメッセージをログに出力します。コンソール出力をきれいに保つには必要な機能です。

パッケージ構成

ロギングAPIでは、ロガー名に通常完全修飾名(パッケージ名付きのクラス名)を使います。その場合、パッケージ階層に応じて出力の抑制制御ができるようになります。例えば、次の階層構造でクラスが作られていたとします。

myapp
  +-- view
  |     +-- MainView
  |     +-- ProcessView
  +-- model
        +-- Hello

  • アプリケーション全体のログ出力レベルをCONFIG以上に指定する場合
    myapp.level = CONFIG
    
  • アプリケーション全体のログはWARNING、ただし表示系はFINE以上に指定する場合
    myapp.level = WARNING
    myapp.view.level = FINE
    

    などと指定できます。

GUI

マルチスレッドおよび並列処理

データ構造

メソッド

引数と戻り値とnull

最適化とメソッド

HotSpot VMのJITコンパイラは、繰り返し実行されるメソッドをネイティブにコンパイルします。また、サイズが小さなメソッドはインライン化の対象となります。JITコンパイラで最適化されやすいように、メソッドはシンプルに小さく作成するとよいでしょう。

例外

禁じ手

これをやられると困る、ということを列挙します。

  • JavaVMの終了(System.exitコール)
  • GCの実行(System.gcコール)

Javadocコメント

全般

コメントでは改行していてもJavadoc文書(HTML)では改行されない

改行が必要な単位を段落タグ<p>で示します。

/**
 * キューに詰まれているアイテム数を取得する。
 * <p>キューに詰まれ、まだ実行状態になっていない待機アイテムの数を計算して返却します。
 *  :
 */

JDK 8からは<p>単独での存在がjavadocコマンドで警告となります。

クリップボードから画像を追加 (サイズの上限: 1 GB)