isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

早期ReturnでIF文の組み合わせを見やすくしよう

IF文の中を整理する簡単な方法を紹介しよう。

こういう仕様を考えてほしい。

お客さんがある商品を購入可能か判定したい。購入可能の条件として

  • ログインしているか
  • 在庫があるか
  • 在庫がないなら再入荷可能か
  • お金は足りているか

があったとする。購入可能ならTrueを、購入不可能ならFalseとReasonを返してほしい。途中でReturnしないならこういうコードになる。

途中でReturnしないIF文

ネストが深く分岐のルートが追い辛いためリーダビリティが低い。さらに、こういうコードは変更に弱い。ある日急に「お金が足りなく、かつ在庫もなければどんなエラーが出るの? その場合お金が足りてないメッセージを優先して出してほしいんだけど」って言われたとして、対応可能だろうか。

こういうコードはとにかく順番にReturnしていこう。

どんどんReturnしていくIF文

見やすくなったであろう。このコードは読みやすいし処理が追いやすい。また仕様とコードの見た目の乖離が少ない。どんどんReturnしよう。

ちなみに、こういうIF文はガードと呼ばれる。ある条件を満たしているか確認してからやりたかった処理をするためのIF文のことだ。