明示的なメソッド群による引数の置き換え

引数の特定の値に応じて、実行されるコードが分岐する場合は「明示的なメソッド群による引数の置き換え」を検討します。
 
たとえば割引価格のルールが「クーポンがある場合は定価の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;
        }
 
このリファクタリングを行うと、条件分岐が呼び出し元に必要になります。「条件分岐をどこで行うのが適切か?」を考慮したうえで適用してください。

g h T
 1,037 Total Views

ADVERTISING

駅チカ!ホテル検索
全国の駅や目的地近くの宿泊施設を検索し予約することができます。最寄駅沿線からもホテルを検索できるので、アクセスのよいホテルを予約することが可能です。
  1. コメントはまだありません。

  1. トラックバックはまだありません。