Bazı doğal güvenlik türlerine sahip bir dil varsayarak (örneğin, JavaScript değil):
A'yı kabul eden bir yöntem göz önüne alındığında SuperType, çoğu durumda bir eylem seçmek için tip sınaması yapmak için cazip olabileceğimizi biliyoruz:
public void DoSomethingTo(SuperType o) {
if (o isa SubTypeA) {
o.doSomethingA()
} else {
o.doSomethingB();
}
}
Genellikle, her zaman değilse, üzerinde tek ve geçersiz kılınabilir bir yöntem oluşturmalı SuperTypeve bunu yapmalıyız:
public void DoSomethingTo(SuperType o) {
o.doSomething();
}
... burada her alt tipe kendi doSomething()uygulaması verilmiştir . Başvurumuzun geri kalanı daha sonra verilenlerin SuperTypegerçekten a SubTypeAveya a olup olmadıklarını görmezden gelebilir SubTypeB.
Olağanüstü.
Ancak, hala is ahepsi güvenli olmasa da çoğu dilde benzer işlemlere sahibiz . Bu da açık tip testler için potansiyel bir ihtiyaç olduğunu göstermektedir.
Peki, hangi durumlarda, varsa, açık tip testler yapmalı mıyız yoksa yapmalı mıyız?
Yokluğum veya yaratıcı olmayışımı affet. Daha önce yaptığımı biliyorum; ama, çok uzun zaman önce dürüst olmuştu, yaptığım şeyin iyi olup olmadığını hatırlayamıyorum! Ve son hafızada, kovboy JavaScript'in dışındaki türleri test etme gereği duyduğumu sanmıyorum .