Demi diskusi saya, Bool dapat memiliki 2 status, Benar atau Salah. Yang lainnya adalah ketidaksesuaian dengan spesifikasi pemrograman langugae. Jika rantai alat Anda tidak sesuai dengan spesifikasinya, Anda disembunyikan apa pun yang Anda lakukan. Jika seorang pengembang membuat jenis Bool yang memiliki lebih dari 2 negara, itu adalah hal terakhir yang akan dia lakukan pada basis kode saya.
Opsi A.
if (var == true) {
...
} else if (var == false) {
...
} else {
...
}
Opsi B
if (var == true) {
...
} else {
...
}
Saya menegaskan Opsi B lebih kuat .....
Setiap twit dapat memberitahu Anda untuk menangani kesalahan yang tidak terduga. Mereka biasanya mudah dideteksi setelah Anda memikirkannya. Contoh yang diberikan oleh profesor Anda bukanlah sesuatu yang bisa terjadi, jadi ini adalah contoh yang sangat buruk.
A tidak mungkin untuk diuji tanpa memanfaatkan uji yang berbelit-belit. Jika Anda tidak dapat membuatnya, bagaimana Anda akan mengujinya? Jika Anda belum menguji kode, bagaimana Anda tahu kode itu berfungsi? Jika Anda tidak tahu itu berfungsi, maka Anda tidak sedang menulis perangkat lunak yang tangguh. Saya pikir mereka masih menyebutnya Catch22 (Film Hebat, tonton kapan-kapan).
Opsi B mudah untuk diuji.
Masalah berikutnya, tanyakan pada Anda, profesor, pertanyaan ini, "Apa yang Anda ingin saya lakukan jika Boolean itu Benar atau Salah?" Itu harus mengarah pada diskusi yang sangat menarik .....
Sebagian besar kasus, dump inti tepat, paling buruk itu mengganggu pengguna atau menghabiskan banyak uang. Bagaimana jika, katakanlah, modulnya adalah sistem perhitungan masuk kembali real-time antar-jemput Antariksa? Jawaban apa pun, betapapun tidak akuratnya, tidak bisa lebih buruk daripada batal, yang akan membunuh pengguna. Jadi apa yang harus dilakukan, jika Anda tahu jawabannya mungkin salah, pilih 50/50, atau batalkan dan lakukan untuk kegagalan 100%. Jika saya seorang anggota kru, saya akan mengambil 50/50.
Opsi A membunuh saya. Opsi B memberi saya kesempatan untuk bertahan hidup.
Tapi tunggu - ini adalah simulasi masuknya kembali pesawat ulang-alik - lalu apa? Batalkan sehingga Anda tahu tentang itu. Kedengarannya seperti ide yang bagus? - BUKAN - karena Anda perlu menguji dengan kode yang Anda rencanakan untuk dikirim.
Opsi A lebih baik untuk simulasi, tetapi tidak dapat digunakan. Tidak berguna Opsi B adalah kode yang digunakan sehingga simulasi melakukan hal yang sama dengan sistem hidup.
Katakanlah ini adalah masalah yang valid. Solusi yang lebih baik adalah dengan mengisolasi penanganan kesalahan dari logika aplikasi.
if (var != true || var != false) {
errorReport("Hell just froze over, var must be true or false")
}
......
if (var == true){
....
} else {
....
}
Bacaan lebih lanjut - Mesin Therac-25 Xray, Ariane 5 Rocket failure, dan lain-lain (Tautan memiliki banyak tautan rusak tetapi cukup info yang Google akan bantu)