Następnego błędu występuję zbyt często w moim kodzie i zastanawiałem się, czy ktoś zna kilka dobrych strategii, aby tego uniknąć.C#: Unikanie błędów spowodowanych brakiem przesuwania ToString
Wyobraźmy sobie klasę tak:
public class Quote
{
public decimal InterestRate { get; set; }
}
w pewnym momencie utworzyć ciąg, który wykorzystuje stopę procentową, tak:
public string PrintQuote(Quote quote)
{
return "The interest rate is " + quote.InterestRate;
}
Teraz wyobraź sobie w późniejszym terminie I refactored się InterestRate własność od dziesiętnej do własnej klasy:
public class Quote
{
public InterestRate InterestRate { get; set; }
}
... ale powiedz, że zapomniałem zastąpić metodę ToString w klasie InterestRate. Chyba że uważnie przyjrzę się każdemu użyciu właściwości InterestRate, prawdopodobnie nigdy nie zauważę, że w pewnym momencie jest ona konwertowana na ciąg znaków. Kompilator z pewnością tego nie wybierze. Moją jedyną szansą na zbawienie jest test integracyjny.
Następnym razem wzywam moje PrintQuote metodę, chciałbym uzyskać ciąg tak:
„Stopa procentowa jest Business.Finance.InterestRate”.
Ouch. Jak można tego uniknąć?
Naprawdę nie sądzę, że chcesz, aby kompilator tworzył dla ciebie dowolne implementacje ToString(). –