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年後の自分がそのコードの面倒を見ることになるかもしれません。
こんな感じで処理をまとめてしまえば後々楽になります。