Zakładając język z pewnym nieodłącznym rodzajem bezpieczeństwa (np. Nie JavaScript):
Biorąc pod uwagę metodę, która akceptuje a SuperType
, wiemy, że w większości przypadków, w których możemy ulec pokusie przeprowadzenia testów typu w celu wybrania akcji:
public void DoSomethingTo(SuperType o) {
if (o isa SubTypeA) {
o.doSomethingA()
} else {
o.doSomethingB();
}
}
Zwykle powinniśmy, jeśli nie zawsze, stworzyć jedną, nadającą się do zastąpienia metodę SuperType
i zrobić to:
public void DoSomethingTo(SuperType o) {
o.doSomething();
}
... w którym każdy podtyp otrzymuje własną doSomething()
implementację. Reszta naszej aplikacji może być odpowiednio nieświadoma, czy dana dana SuperType
jest naprawdę SubTypeA
a SubTypeB
.
Wspaniale.
Ale wciąż mamy is a
podobne operacje w większości, jeśli nie we wszystkich, językach bezpiecznych dla typu. A to sugeruje potencjalną potrzebę jawnego testowania typu.
Tak więc, w jakich sytuacjach, jeśli w ogóle, powinny nas lub musi wykonujemy wyraźny badanie typu?
Wybacz mi moją nieobecność lub brak kreatywności. Wiem, że już to zrobiłem; ale to było tak dawno temu, że nie pamiętam, czy to, co zrobiłem, było dobre! W niedawnej pamięci nie sądzę, że spotkałem się z potrzebą testowania typów poza moim kowbojskim JavaScript.