6991b545c767c01943f69004fc3d9b7a
2015/12/04 10:38:27 投稿
1

"【Refactor Me】if else" と言われたのでとりあえず

Rangeを使えばもっとキレイに書けそうだね、って思いました。

クラス化してるのには特に意味は無いです。

Before

0 <= age or raise

if 0 <= age && age <= 2
  'baby'
elsif 3 <= age && age <= 6
  'little child'
elsif 7 <= age && age <= 12
  'child'
elsif 13 <= age && age <= 18
  'youth'
else
  'adult'
end

After

class Human
  attr_accessor :age

  def initialize(age: 0)
    @age = age
  end

  def age_division
    case @age
    when 0..2
      'baby'
    when 3..6
      'little child'
    when 7..12
      'child'
    when 13..18
      'youth'
    else
      'adult'
    end
  end
end

youth = Human.new(age: 18)
puts youth.age_division #=> 'youth'

みんなのコメント

01c2f361532872f4729212007efb616a
youchan0813
2015/12/22 13:47:51 投稿

0 <= age or raiseこの条件抜けてませんか?