MST

星途 面试题库

面试题:Ruby 代码重构之方法提取

给定一段 Ruby 代码如下: ```ruby def calculate_total(prices, tax_rate) total = 0 prices.each do |price| total += price end total_with_tax = total * (1 + tax_rate) return total_with_tax end ``` 请使用方法提取的重构技巧,使这段代码结构更清晰,更易于维护,并解释为什么这样重构。
36.0万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

重构后的代码如下:

def calculate_subtotal(prices)
  prices.sum
end

def calculate_total(subtotal, tax_rate)
  subtotal * (1 + tax_rate)
end

解释:

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