4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

nullをreturnしないメモ

Last updated at Posted at 2021-10-20

概要

チームメンバーがnullをreturnしていたのですが、想定している挙動が分からないので他に置き換えた方がいいのではと思い、説明のために整理したメモ。

nullのreturnは、例えばこのようなコードです。

public ZonedDateTime calculationDate(ZonedDateTime acceptAt) {
        if (acceptAt == null) {
            return null;
        }

null返り値が保守作業に与える悪影響の調査

ソフトウェアシンポジウム2013で発表があった模様。
https://sdl.ist.osaka-u.ac.jp/pman/pman3.cgi?DOWNLOAD=229

null返り値はバグを含みやすくなる。

分析の結果,null 返り値および null チェックが,規模や作業工程の種別に関係なく頻繁に修正されることを確認した.修正頻度が高いという ことは,バグを含みやすくなると考えられるため,null 返り値および null チェックが保守作業に悪影響を 及ぼしていることを示している.

null返り値は簡易に記述できるのが利点の一方で、バグを発生させる原因として知られている。

メソッド内で満たすべき条件を満たさなかった際に null を返す記述が多数存在する (null 返り値).エラー定数 や例外処理を用いる場合に比べ,null 返り値を用いる利点は以下のとおりである.
• null は特殊な値であるため,プログラムが満たすべき条件を満たさなかったことが一目でわかること.
• 満たさなかった条件に合わせたエラーメッセージを考える必要がないこと.
• 例外処理などに比べ,簡易な記述が行えること.
null 返り値はこのように開発者の助けとなる一方で,バグを発生させる原因として知られている.null 返り値 に関連する主なバグとして,null 値参照が挙げられる.

null返り値を安易に記述してしまう前に他の記述を考えるべきとある。

これらの分析により,様々なプロジェクトにおいて,null 返り値および null チェックが保守作業に悪影響を与えて いることがわかった.そのため,開発者は null 返り値を 安易に記述してしまう前に,他の記述で置き換える事がで きないかを考えるべき,といえる.具体的には,例外処理 を用いる方法,null の代わりに適切なオブジェクト(空の 配列,特殊なクラスなど)を返す,などが挙げられる

Javaでメソッドから戻る・戻り値を戻す returnの使い方と活用方法

nullかもしれないならOptionalでreturnするのも良さそう。
https://www.bold.ne.jp/engineer-club/java-return#-nullOptionalreturn

static Optional<String> getNullable() {

# まとめ
null返り値を使ってはいけないわけではないですが、まずは他の記述に置き換えられないか考えてみないとですね!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?