isXXX系メソッドって例えば?
FileクラスのisFileやisDirectoryメソッドなどがあります。
Fileクラス公式ドキュメント
特徴は?
シンプルにbooleanを返します。
booleanとはtrueやfalseといった真偽値を表すデータ型です。
if文の分岐条件やwhile文の継続条件として用いることができます。
isXXX系メソッドのコード例
例としてisBlankメソッドを作成してみます。
// 指定された値が空文字かを判定する。
// 空文字であれば true。
// そうでなければ false を返す。
public boolean isBlank(String value) {
if (value.isEmpty()) {
return true;
}
return false;
}
使い方は?
先程作成したisBlankを例にコードを示します。
まずif文です。
if (isBlank(value)) {
// 文字が入力されていない場合の処理
System.out.println("文字が入力されていません。");
} else {
// 文字が入力されている場合の処理
System.out.println("入力された文字は「" + value + "」です。");
}
if(isBlank(value))この様に記述することで、
「値が入力されていなければ」という意図を、読み手に対して明確に伝えることができます。
続いてwhile文です。
!isBlankとすることでtrueとfalseを反転させています。
while (!isBlank(value)) {
// 文字が入力されている場合の処理
System.out.println("入力された文字は「" + value + "」です。");
}
while(!isBlank(value))としています。
if文同様、「値が入力されていれば」という意図が明確です。
value.isEmpty()でいいじゃん
間違いではありません。
しかし、時としてblankの定義は変更されることがあります。
先程のisBlankは、単に空文字であるかどうかのみ判定しています。
もし、引数がnullだったら?
nullに対してメソッド呼び出しを行うと例外が発生してしまいます。
// value の中身が null だと java.lang.NullPointerException が発生
value.isEmpty()
null に対応する
空文字の判定処理をメソッド化しておくことで、null対応も容易に行うことができます。
では、実際にisBlankをnullに対応させてみます。
// 指定された値が null または空文字かを判定する。
// null または空文字であれば true。
// そうでなければ false を返す。
public boolean isBlank(String value) {
if(value == null) {
return true;
}
if(value.isEmpty()) {
return true;
}
return false;
// 以下の様に書くことも出来ますが、新人向けということで。
// return value == null || value.isEmpty();
}
isBlankに以下のロジックを追加しただけです。
if(value == null) {
return true;
}
この様に、1箇所に修正を加えるだけで、isBlankを呼び出している箇所全てに変更を適用することができます。
コードを書き終え、いざテストをしようとした段階でblankにはnullも含まれるよ、なんて言われても問題ありません。
まとめ
他の誰かが、明日の、1週間後の、1年後の自分がそのコードの面倒を見ることになるかもしれません。
こんな感じで処理をまとめてしまえば後々楽になります。