Benim tartışmam uğruna bir Bool'un Doğru veya Yanlış olmak üzere 2 durumu olabilir. Başka bir şey programlama dili spesifikasyonlarına uygun değildir. Eğer takım zinciriniz spesifikasyonlarına uygun değilse, ne yaparsanız yapın hortumludur. Bir geliştirici 2 durumdan fazla olan bir Bool türü oluşturduysa, kod tabanımda yapacağı en son şey bu olurdu.
Seçenek A
if (var == true) {
...
} else if (var == false) {
...
} else {
...
}
Seçenek b
if (var == true) {
...
} else {
...
}
Seçenek B'nin daha sağlam olduğunu iddia ediyorum .....
Herhangi bir twit beklenmedik hataları ele almanızı söyleyebilir. Onlar genellikle bir kez düşününce algılanması kolaydır. Profesörünüzün verdiği örnek, olabilecek bir şey değil, bu yüzden çok zayıf bir örnek.
Eşleştirilmiş test kablo demetleri olmadan test etmek mümkün değildir. Eğer yaramazsan, nasıl test edeceksin? Kodu sınamamışsanız, çalıştığını nasıl anlarsınız? Eğer işe yaradığını bilmiyorsanız, sağlam bir yazılım yazmıyorsunuzdur. Bence hala buna Catch22 diyorlar (Harika film, bazen izleyin).
B Seçeneği test etmek için çok önemlidir.
Bir sonraki sorun, profesörünüze şu soruyu sorun: "Bir Boole ne Doğru, ne Yanlış ise bu konuda ne yapmamı istiyorsunuz?" Bu çok ilginç bir tartışmaya yol açmalı…
Çoğu durumda, bir çekirdek dökümü uygundur, en kötüsü kullanıcıyı rahatsız eder veya çok paraya mal olur. Modül Uzay mekiği gerçek zamanlı yeniden giriş hesaplama sistemi ise ne olur? Herhangi bir cevap, ne kadar yanlış olursa olsun, kullanıcıları öldürecek şekilde iptal etmekten daha kötü olamaz. Öyleyse ne yapmalı, cevabın yanlış olduğunu biliyorsanız, 50 / 50'ye gidin veya% 100 başarısızlığı iptal edin. Mürettebat üyesi olsaydım, 50/50 alırdım.
Seçenek A beni öldürür Seçenek B bana hayatta kalma şansını bile verir.
Ama bekleyin - uzay mekiği girişinin bir simülasyonu - öyleyse ne? İptal et, bunu biliyorsun. İyi bir fikir gibi geliyor mu? - DEĞİL - çünkü göndermeyi planladığınız kodla test etmeniz gerekir.
Seçenek A, yatma için daha iyidir, ancak konuşlandırılamaz. Faydası yok Seçenek B konuşlandırılmış koddur, böylece simülasyon canlı sistemlerle aynı şekilde çalışır.
Bunun geçerli bir endişe olduğunu varsayalım. En iyi çözüm, hata işlemeyi uygulama mantığından izole etmek olacaktır.
if (var != true || var != false) {
errorReport("Hell just froze over, var must be true or false")
}
......
if (var == true){
....
} else {
....
}
Daha fazla okuma - Therac-25 Xray makinesi, Ariane 5 Roket arızası ve diğerleri (Link birçok bağlantıya sahiptir, ancak Google’ın yardımcı olacağı konusunda yeterli bilgi vardır)