修正ポイント
- if文のネストをなくす
- 条件が当てはまる確率が低い方から先に記述
- while分をeachメソッドに変更
- 変数の数を減らす
- コードを減らす
リファクタリング前
def fizzBuzz(count)
i = 1
while i < count + 1 do
if i % 3 == 0 then
if i % 5 == 0 then
puts 'FizzBuzz'
else
puts 'Fizz'
end
elsif i % 5 == 0 then
puts 'Buzz'
else
puts i
end
i += 1
end
end
fizzBuzz(20)
リファクタリング後
def fizzBuzz(count)
(1..count).each do |c|
if c % 15 == 0
puts 'FizzBuzz'
elsif c % 5 == 0
puts 'Buzz'
elsif c % 3 == 0
puts 'Fizz'
else
puts c
end
end
end
fizzBuzz(20)