<重构>读书笔记之<提炼方法>

来源:互联网 发布:营销软件 编辑:程序博客网 时间:2024/06/10 08:41

动机:方法粒度小,重用率高,可以读起来像注释,重新修改时比较简单。要注意命名,否则,不提炼也罢。

关键:局部变量或是以整体搬迁(声明、使用都移动到新方法)还是以参数传递的形式传递给新方法。注意局部变量是不是在后面的代码使用到了。

示例:

def print_owning(previous_amount)
  outstanding = previous_amount * 1.2
  print_banner


  #calculate outstanding
  @order.each do |order|
    outstanding += order.outstanding
  end


  print_details outstanding
end

提炼、注入闭包、内联化局部变量---->

def print_owning(previous_amount)
  print_banner
  outstanding = calculate_outstanding(previous_amount * 1.2)
  print_details outstanding
end


def calculate_outstanding(initial_value)
  @order.inject(initial_value) { |result, order|  result + order.outstanding }
end

原创粉丝点击