我只是在练习面向对象的设计。这是一个简单的预算计算器。我该怎么做才能使这段代码更干净,更干?如果我没记错的话,它是一个具有简洁类和函数的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
答案 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
希望这会有所帮助。