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ı SuperType
ve 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 SuperType
gerçekten a SubTypeA
veya a olup olmadıklarını görmezden gelebilir SubTypeB
.
Olağanüstü.
Ancak, hala is a
hepsi 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 .