私が取り組んでいるプログラムの一部は、パッケージ重量を引数として取り入れ、その重量に基づいて配送コストを計算する関数を実装しています。次のようにコスト/ポンドのための基準は、次のとおりです。C++重量に基づいて配送料を計算する
Package Weight Cost
-------------- ----
25 lbs & under $5.00 (flat rate)
26 - 50 lbs above rate + 0.10/lb over 25
50 + lbs above rate + 0.07/lb over 50
私は計算を行うが、そのビットの繰り返しのように感じるようにした場合、もし他に-IFを使用:
const int TIER_2_WEIGHT = 25;
const int TIER_3_WEIGHT = 50;
const float TIER_1_RATE = 5.00;
const float TIER_2_RATE = 0.10;
const float TIER_3_RATE = 0.07;
float shipPriceF;
if(shipWeightF <= TIER_2_WEIGHT)
{
shipPriceF = TIER_1_RATE;
}
else if(shipWeightF <= TIER_3_WEIGHT)
{
shipPriceF = ((shipWeightF - TIER_2_WEIGHT) * TIER_2_RATE) +
TIER_1_RATE;
}
else
{
shipPriceF = ((shipWeightF - TIER_3_WEIGHT) * TIER_3_RATE) +
((TIER_3_WEIGHT - TIER_2_WEIGHT) * TIER_2_RATE) +
TIER_1_RATE;
}
return shipPriceF;
ので、質問は...これはこの作業を達成する最良の方法ですか、別の解決策を探しているべきですか?
あなたが持っているものは、良い実践の点では真実です。 if-else if-elseが使用されている限り、繰り返しはありません。 – VHS
さらに、ここには再帰的なものはありません。 –
これらが唯一の層だとすれば、これはうまく見えます。 – Qix