如何重构这些简单的功能并使它们更干?

时间:2014-06-14 16:49:50

标签: ruby oop refactoring dry

我只是在练习面向对象的设计。这是一个简单的预算计算器。我该怎么做才能使这段代码更干净,更干?如果我没记错的话,它是一个具有简洁类和函数的Ruby约定。虽然我的功能很短,但课程本身很大。

我看到我在几个地方除以12。这可以被干掉吗?

class Dylan
  def salary
    80000
  end

  def tax_rate
    0.28
  end

  def net_salary
    (1 - tax_rate) * salary
  end

  def monthly_budget
    net_salary / 12.0
  end

  def car_payment
    457.0
  end

  def car_insurance
    2600 / 12.0
  end

  def gas
    2400 / 12.0     
  end  

  def rent
    2000
  end

  def food
    300
  end

  def left_with
    monthly_budget - car_insurance - car_payment - gas - rent - food
  end
end

d = Dylan.new

p d.left_with

1 个答案:

答案 0 :(得分:0)

试试这个:

class Dylan
  SALARY = 80000
  TAX_RATE = 0.28
  CAR_PAYMENT = 457.0        
  CAR_INSURANCE = 2600 / 12.0
  GAS = 2400 / 12.0 
  RENT = 2000
  FOOD = 300

  def net_salary
    (1 - TAX_RATE) * SALARY
  end

  def monthly_budget
    net_salary / 12.0
  end

  def expenditure
    CAR_INSURANCE + CAR_PAYMENT + GAS + RENT + FOOD
  end

  def remaining_income
    monthly_budget - expenditure 
  end
end

d = Dylan.new

p d.remaining_income

由于薪水在课堂上是不变的,你可以通过范围解析算子来获得。

Dylan::SALARY =>  80000 
希望这会有所帮助。