自身の書き方を言語化するシリーズ
この文章内での早期returnとは
メソッドなどで処理の終端に到達する前に return
をして戻り値を先行して返すこと。
早期returnを利用できるパターン
早期returnが有用なケースをパターン分けすると以下の2つになると考えている
- 防御的プログラミングでの早期return
- 分岐処理の早期return
それぞれに関して記述していく
防御的プログラミングでの早期return
メソッドの引数の値がおかしい場合に実処理を行わないなどの防御的プログラミングの文脈でのやりかたは以下の考え方
def half_value(number) return_value = nil # ゼロを除算するとエラーになるので0より大きな数値 if number > 0 return_value = number / 2 end return_value end
このような事前チェックが必要なタイプはチェックのやり方が有用になる。後置ifが使えるRubyだと更にスッキリできる。
def half_value(number) return nil if number > 0 number / 2 end
分岐処理での早期return
もしかすると 早期return
とはこちらの意味合いを保つ場合のほうが多いかもしれないが、こちらの文脈は以下のようなパターン。
お題が以下のようなものだったとする
与えられた数字が2なら与えられた数、2でなかったら与えられた数と1〜10の数を2乗した値を足して返す
def calc(number) return_number = 0 if number == 2 return_number = number else rand_set_number = rand(10)^2 return_number = number + rand_set_number end return_number end
この場合は与えられた数( number
)が2だったら後続処理の必要は無いのでreturnできる
def calc(number) return number if number == 2 rand_set_number = rand(10)^2 return rand_set_number end return_number end
ただし、この分岐処理の早期returnは明確にスイッチング処理になる場合はswitch case文のような記述を行ったほうが見通し良い場合もあるので状況によって書き換えるといい