PriceCalculator.cs
public class PriceCalculator
{
public const int SmallCoffeeQuantity = 100;
public const int NormalCoffeeQuantity = 150;
public const int DoubleCoffeeQuantity = 300;
public CashMachine() { }
public double CalcPrice(int quantity)
{
switch (quantity)
{
case SmallCoffeeQuantity:
return 0.20;
case NormalCoffeeQuantity:
return 0.30;
case DoubleCoffeeQuantity:
return 0.60;
default:
throw new InvalidOperationException(
"Unsupported coffee quantity: " + quantity);
}
}
}
|
Създали сме три константи, отразяващи вместимостта на чашките за кафе, които имаме в заведението, съответно 100, 150 и 300 ml. Освен това очакваме, че потребителите на нашия клас ще използват прилежно дефинираните от нас константи, вместо числа – SmallCoffeeQuantity, NormalCoffeeQuantity и DoubleCoffeeQuantity. Методът CalcPrice(int) връща съответната цена, като я изчислява според подаденото количество.
Проблемът, се състои в това, че някой може да реши да не използва дефинираните от нас константи и може да подаде като параметър на нашия метод невалидно число, например -1 или 101. В този случай, ако методът не прави проверка за невалидно количество, най-вероятно ще върне грешна цена, което е некоректно поведение.
За да избегнем този проблем, ще използваме една особеност на изброените типове, а именно, че константите в изброените типове могат да се използват в конструкции switch-case. Те могат да бъдат подавани като стойност на оператора switch и съответно – като операнди на оператора case.
Сподели с приятели: |