Что ж, решил ответить на свой вопрос, написать как я сейчас думаю можно решить это задание.
Если решать эту задачу с учетом того, что больше никак и никем улучшаться этот функционал (несколько условий) не будет, то как и указал
mayton2019 можно написать простенький метод по типу:
// не знаю на счет работоспособности кода, не проверял
// константы можно куда-то вынести
private const decimal PRICE_FOR_BAGGAGE = 50D;
private const int LIMIT_DAYS_FOR_UP_PRICE = 5;
private const decimal PRICE_PER_OVERDUE_DAY = 10D;
public decimal CalculateActualPrice(Flight flight)
{
var actualPrice = flight.BasePrice;
if (flight.HasBaggage == true)
actualPrice += PRICE_FOR_BAGGAGE;
int daysLeft = (flight.DateOfDeparture - DateTime.UtcNow).TotalDays;
if (daysLeft <= LIMIT_DAYS_FOR_UP_PRICE && daysLeft > 0)
actualPrice += daysLeft * PRICE_PER_OVERDUE_DAY;
// ...
return actualPrice;
}
Но, если нужно будет добавлять много функционала тогда можно было бы создать класс PriceBuilder и использовать его, например:
decimal actualPrice = new PriceBuilder(flight)
.CorrectionForBaggage(priceForBaggageAvailability: 50D)
.CorrectionForDaysLeft(limitDaysForUpPrice: 5, pricePerOverdueDay: 10D)
// ...
.Build();
Кстати, я не против если вы предложите свои варианты или покритикуете мои.)