Я нахожу следующую ошибку, которая встречается слишком часто в моем коде, и задаюсь вопросом, знает ли кто-нибудь какие-нибудь хорошие стратегии, чтобы ее избежать.
Представьте себе такой класс:
public class Quote
{
public decimal InterestRate { get; set; }
}
В какой-то момент я создаю строку, которая использует процентную ставку, например:
public string PrintQuote(Quote quote)
{
return "The interest rate is " + quote.InterestRate;
}
Теперь представьте, что позже я реорганизовал свойство InterestRate из десятичного в его собственный класс:
public class Quote
{
public InterestRate InterestRate { get; set; }
}
... но скажите, что я забыл переопределить метод ToString в классе InterestRate. Если бы я не внимательно изучил каждое использование свойства InterestRate, я бы, вероятно, никогда не заметил бы, что в какой-то момент оно преобразуется в строку. Компилятор, конечно, не подхватит это. Мой единственный шанс на спасение - через интеграционный тест.
В следующий раз, когда я вызову мой PrintQuote метод, я получу строку, подобную этой:
"Процентная ставка - Business.Finance.InterestRate" .
Уч. Как этого избежать?