結論
⇨条件分岐のネストを深くしないための技法のひとつ。 要は下記のように条件分岐がネストしているコードをネストしないようにする技法
if 条件式A if 条件式B 条件式Bのtrue処理 end else 条件式Aのtrueの処理 end
具体例
具体例数字の1~10までの数字が格納された配列から要素を1つずつ取り出し数字の5の時[5です]と表示し数字が偶数の時「偶数の配列」の中に入れる、奇数の時「奇数の配列」の中に入れるプログラムを作成してみる
Guard Clauseなし
numbers = (1..10).to_a even = [] #偶数 odd = [] #奇数 numbers.each do |number| if number == 5 puts "5です" else if number % 2 == 0 even.push(number) else odd.push(number) end end end 5です puts even #偶数表示[2,4,6,8,10] puts odd #奇数表示[1,3,5,7,9]
if文がネストしていてわかりにくい
Guard Clauseあり
numbers = (1..10).to_a even = [] #偶数 odd = [] #奇数 numbers.each do |number| puts "5です" if number == 5 if number % 2 == 0 even.push(number) else odd.push(number) end end puts even #偶数表示 puts odd #奇数表示
後置if文を使うことでifの条件分岐のネストがなくなり可読性が高いコードになりました。