Dengan asumsi sebuah bahasa dengan keamanan tipe bawaan (mis., Bukan JavaScript):
Diberikan metode yang menerima a SuperType, kita tahu bahwa dalam kebanyakan kasus di mana kita mungkin tergoda untuk melakukan pengujian tipe untuk mengambil tindakan:
public void DoSomethingTo(SuperType o) {
if (o isa SubTypeA) {
o.doSomethingA()
} else {
o.doSomethingB();
}
}
Kita biasanya, jika tidak selalu, membuat metode tunggal yang dapat ditimpa pada SuperTypedan melakukan ini:
public void DoSomethingTo(SuperType o) {
o.doSomething();
}
... dimana setiap subtipe diberikan doSomething()implementasinya sendiri . Sisa dari aplikasi kita kemudian dapat dengan tepat tidak mengetahui apakah yang diberikan SuperTypebenar-benar a SubTypeAatau a SubTypeB.
Hebat.
Tapi, kami masih diberi is aoperasi mirip-di sebagian besar, jika tidak semua, jenis bahasa yang aman. Dan itu menunjukkan potensi kebutuhan untuk pengujian tipe eksplisit.
Jadi, dalam situasi apa, jika ada, harus kita atau harus kita melakukan pengujian jenis eksplisit?
Maafkan ketidakhadiran pikiran saya atau kurangnya kreativitas. Saya tahu saya pernah melakukannya sebelumnya; tapi, sejujurnya sudah lama sekali aku tidak bisa mengingat apakah yang kulakukan itu bagus! Dan dalam memori baru-baru ini, saya rasa saya tidak perlu menemukan jenis untuk menguji di luar JavaScript koboi saya.