<重構>讀書筆記之<提煉方法>

動機:方法粒度小,重用率高,可以讀起來像註釋,重新修改時比較簡單。要注意命名,否則,不提煉也罷。

關鍵:局部變量或是以整體搬遷(聲明、使用都移動到新方法)還是以參數傳遞的形式傳遞給新方法。注意局部變量是不是在後面的代碼使用到了。

示例:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章