#はじめに
条件分岐のネストが深くなると可読性が落ちてしまいます。
しかし、returnを使って「早期復帰」させることで条件分岐をシンプルに書くことができます。
条件分岐でreturnを使う方法
まず、以下がreturn
を使わずに書いたとき。ネストが深くてパッと見分かりにくいですよね。
room.present?
じゃない時でもtrue
を返すけど、SPECIAL_ROOM_NUM
がある時だけはfalse
を返すっていう処理です。
class Room
SPECIAL_ROOM_NUM = [104, 204, 304].freeze
def stayable?(room)
if room.present?
if SPECIAL_ROOM_NUM.include?(room)
false
else
true
end
else
true
end
end
end
return
を使って書いたのが以下。Rubyだと後置ifや後置unlessが使えるので一行で書くことができます。
present?
の逆はblank?
なので、room.blank?
の時にtrue
を返すよ、っていう処理にします。
さらにSPECIAL_ROOM_NUM
を含んでいる時にはfalse
を返すようにという書き方もできて、さらにDRYなコードにできますね。
class Room
SPECIAL_ROOM_NUM = [104, 204, 304].freeze
def stayable?(room)
return true if room.blank?
return false if SPECIAL_ROOM_NUM.include?(room)
true
end
end