面试题答案
一键面试重构后的代码如下:
def calculate_subtotal(prices)
prices.sum
end
def calculate_total(subtotal, tax_rate)
subtotal * (1 + tax_rate)
end
解释:
- 提高可读性:原代码将计算子总价(不包含税的总价)和计算包含税的总价放在一个方法中。重构后,将计算子总价提取到
calculate_subtotal
方法中,使得每个方法职责单一,从方法名就能清晰知道该方法的作用。 - 易于维护:如果计算子总价的逻辑需要修改,比如添加一些特殊条件判断,只需在
calculate_subtotal
方法中修改,不会影响到计算包含税总价的逻辑。同理,修改计算包含税总价的逻辑也不会影响计算子总价的逻辑。 - 代码复用:如果在其他地方也需要计算子总价,直接调用
calculate_subtotal
方法即可,无需重复编写相同的计算逻辑。