明示的なメソッド群による引数の置き換え
引数の特定の値に応じて、実行されるコードが分岐する場合は「明示的なメソッド群による引数の置き換え」を検討します。
たとえば割引価格のルールが「クーポンがある場合は定価の8割、ない場合は9割で販売する」だったとします。
上記を踏まえ「割引価格を取得する」メソッドを以下のように定義しました。
// 割引価格を取得します
private decimal GetDiscountPrice(bool hasCoupon, decimal listPrice)
{
// クーポンがある場合
if (hasCoupon == true)
{
return listPrice * 0.8M;
}
return listPrice * 0.9M;
}
これはこれで問題ないと思いますが、「明示的なメソッド群による引数の置き換え」を行うと引数の数を減らせます
// 割引価格を取得します
private decimal GetDiscountPrice(decimal listPrice)
{
return listPrice * 0.9M;
}
// 割引価格を取得します(クーポンあり)
private decimal GetDiscountPriceHasCoupon(decimal listPrice)
{
return listPrice * 0.8M;
}
このリファクタリングを行うと、条件分岐が呼び出し元に必要になります。「条件分岐をどこで行うのが適切か?」を考慮したうえで適用してください。
コメントはまだありません。