Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 リファクタリング−プログラマーの体質改善 | メソッド呼び出しの単純化 | メソッドのパラメーター化

内容

リファクタリング

メソッドのパラメーター化

適用ケース要約

複数メソッドが、異なる値に対してよく似た振る舞いをしている

適用内容要約

その異なる値を一つの引数として受け取るメソッドと作成する

適用詳細

複数メソッドが似たような振る舞いをしている場合に、異なる値をパラメータにすることで
重複をなくし、拡張性を高めることができます。

サンプル

法改正前後の消費税込み価格を計算する機能を実装します

サンプルコード

リファクタリング

# encoding: Shift_JIS

def ten_percenet_consumption_tax(price)
  return (price + price*0.10).to_i
end

def five_percenet_consumption_tax(price)
  return (price + price*0.05).to_i
end

price=10000
puts "消費税改正前に10000円買うと税込#{five_percenet_consumption_tax(price)}"
puts "消費税改正後に10000円買うと税込#{ten_percenet_consumption_tax(price)}"

リファクタリング

# encoding: Shift_JIS

FIVE_CONSUMPTION_TAX=0.05
TEN_CONSUMPTION_TAX=0.10

def calculate_consumption_tax(price,rate)
  return (price + price*rate).to_i
end

price=10000
puts "消費税改正前に10000円買うと税込#{calculate_consumption_tax(price,FIVE_CONSUMPTION_TAX)}"
puts "消費税改正後に10000円買うと税込#{calculate_consumption_tax(price,TEN_CONSUMPTION_TAX)}"

出力(共通)

消費税改正前に10000円買うと税込10500円
消費税改正後に10000円買うと税込11000円