4.nullチェックが多すぎる場合!

こんにちは管理人(@vip___p)です。

今回はリファクタリング/nullオブジェクトについて触れていこうと思います。

リファクタリングについては下記の記事で簡単にまとめているので是非参考にしてください。

下記のような方は是非参考にしてください。

  • Java初学者
  • リファクタリングについて興味がある方

書籍:[Java言語で学ぶリファクタリング入門]
ヌルオブジェクトについて触れていきます。

nullオブジェクト

nullオブジェクトとは何ぞやと思う方も多いと思います。

コードを見ていると稀にnullチェックが多いと感じることがありませんか?

または自分がnullチェックを多用していると感じるかもしれません。

こういったコードを長らく見ていれば見ているほど
こんな表情になってしまいます。

そういったときにnullオブジェクトを使用しましょうというのが
今回の記事になります。

改善前
if (name != null) {
name.display();
}
改善中
if (!nameisNull()){
  name.display();
}
改善後
name.display();

nullオブジェクトクラスを作成しisNullメソッドを作りましょう。

もう少し具体的に確認していきましょう。

public class Label {
  public boolean isNull {
    return false;
  }
  public boolean display {
    System.out.println("表示");
  }
}
// nullオブジェクトのクラス
public class NullLabel extends Label{
  // 表示しない処理
  @override
  public void display {
  }

  @Override
  public boolean isNull {
    return true;
  }
}

元のLavelクラスではnullオブジェクトではないので
戻り値はfalseとしています。

ですがnullオブジェクトのクラスとして使用する場合は
戻り値をtrueに置き換え@Overrideしましょう。

isNullメソッドを使用する場合、何もしない処理を追加しているので

条件式そのものが不要になり簡潔な記述になります。

nullオブジェクトのデメリット

nullオブジェクトのデメリットはクラスが増えてしまうことです。

nullチェックが多すぎる場合などに導入することを検討してみてはいかがでしょうか。

nullチェックを見つければ絶対に行うと言う意味ではないので注意してください。

まとめ

まとめ

今回のまとめです。

上手く使用できるようになればかなりきれいなコードを記述することができると思います。

皆さんの参考になれば幸いです。