JavaTechnic - Getaji/TechDocument GitHub Wiki

基本的なテクニックを掲載。

目次

処理の分離

そのメソッドの役割、処理を明確にし、可読性を上げる。

NG
public void apply(String str) {
    if (str == null || str.isEmpty()) {
        throw new IllegalArgumentException("str");
    }
    // do something...
}
OK
public void apply(String str) {
    checkString(str);
    // do something...
}

public void checkString(String str) {
    if (str == null || str.isEmpty()) {
        throw new IllegalArgumentException("str");
    }
}

java.util.Scanner

「えーマジBufferedReader!?」「キモーイ」「BufferedReaderが許されるのは研修中までだよねー」「キャハハハハ」

入力をいい感じに読み取ってくれるクラス。

BufferedReader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String[] nums = bufferedReader.readLine().split(" ");
int m = Integer.parseInt(nums[0]);
int n = Integer.parseInt(nums[1]);
bufferedReader.close();
Scanner
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
scanner.close();

Logger

 ログを出力するためのAPI。この出力処理をLoggingと呼ぶ。標準APIのjava.util.loggingパッケージにて提供されているが、より高機能なlog4jなどのライブラリが公開されているので、そちらを使ったほうがいいだろう。
 Loggerによるログはログレベルが設定されており、出力する情報に応じて使い分けていく。多くのライブラリは出力するログレベルを設定することが出来、それに満たない・該当しないログレベルのログは出力されない。これによりリリースへの影響を最小限に抑えた開発用のデバッグプリントなどをすることができる。
 その他にも日付時刻、出力元のクラスなどの様々な情報が簡単に付加できるため、ぜひとも導入をお勧めする。
 また、Lombokを使うとLog系アノテーションを付加するだけで簡単にLoggingが可能となるので、こちらとの併用もお勧めだ。

例:Log4j2
package com.getaji;

@Log4j2
public class Main {
    public static void main(String[] args) throws Exception {
        log.debug("Debug print");
    }
}
出力

15:38:18.527 [main] DEBUG com.getaji.Main - Debug print