เพื่อประโยชน์ในการพูดคุยของฉันบูลสามารถมี 2 สถานะคือจริงหรือเท็จ สิ่งอื่นใดที่ไม่เป็นไปตามข้อกำหนดการเขียนโปรแกรม langugae หากห่วงโซ่เครื่องมือของคุณไม่สอดคล้องกับข้อกำหนดคุณจะถูก hosed ไม่ว่าคุณจะทำอะไร หากนักพัฒนาสร้าง Bool ประเภทที่มีมากกว่า 2 สถานะมันเป็นสิ่งสุดท้ายที่เขาจะทำบน codebase ของฉัน
ตัวเลือก A.
if (var == true) {
...
} else if (var == false) {
...
} else {
...
}
ตัวเลือก B
if (var == true) {
...
} else {
...
}
ฉันยืนยันตัวเลือก B นั้นแข็งแกร่งกว่า .....
twit ใด ๆ สามารถบอกให้คุณจัดการกับข้อผิดพลาดที่ไม่คาดคิด พวกมันมักจะตรวจจับได้ง่ายเมื่อคุณนึกถึงพวกเขา ตัวอย่างอาจารย์ที่คุณให้มาไม่ใช่สิ่งที่อาจเกิดขึ้นดังนั้นมันจึงเป็นตัวอย่างที่แย่มาก
A ไม่สามารถทำการทดสอบได้หากไม่มีสายการทดสอบที่ซับซ้อน หากคุณไม่สามารถสร้างมันขึ้นมาคุณจะทดสอบมันอย่างไร หากคุณยังไม่ได้ทดสอบโค้ดคุณจะรู้ได้อย่างไรว่าทำงานได้อย่างไร หากคุณไม่รู้ว่ามันใช้งานได้แสดงว่าคุณไม่ได้เขียนซอฟต์แวร์ที่มีประสิทธิภาพ ฉันคิดว่าพวกเขายังคงเรียกว่า Catch22 (ภาพยนตร์ยอดเยี่ยมดูบางครั้ง)
ตัวเลือก B นั้นไม่สำคัญสำหรับการทดสอบ
ปัญหาต่อไปขอให้คุณศาสตราจารย์คำถามนี้ "คุณต้องการให้ฉันทำอะไรถ้าบูลีนไม่ใช่ของจริงหรือเท็จ?" นั่นควรนำไปสู่การสนทนาที่น่าสนใจมาก .....
กรณีส่วนใหญ่การถ่ายโอนข้อมูลหลักเป็นที่น่ากลัวอย่างยิ่งที่จะทำให้ผู้ใช้รำคาญหรือเสียค่าใช้จ่ายเป็นจำนวนมาก จะทำอย่างไรถ้าพูดว่าโมดูลนั้นเป็นระบบการคำนวณย้อนกลับสู่อวกาศเรียลไทม์กระสวย? คำตอบใด ๆ ไม่ว่าวิธีที่ไม่ถูกต้องจะไม่เลวร้ายยิ่งไปกว่าการยกเลิกซึ่งจะฆ่าผู้ใช้ ดังนั้นถ้าคุณรู้ว่าคำตอบอาจผิดไป 50/50 หรือยกเลิกแล้วไป 100% ความล้มเหลว ถ้าฉันเป็นสมาชิกลูกเรือฉันจะรับ 50/50
ตัวเลือก A ฆ่าฉันตัวเลือก B ให้โอกาสฉันอยู่รอด
แต่เดี๋ยวก่อน - มันเป็นแบบจำลองของกระสวยอวกาศย้อนกลับ - แล้วอะไรนะ? ยกเลิกเพื่อให้คุณรู้เกี่ยวกับมัน เสียงเหมือนความคิดที่ดี? - ไม่ - เพราะคุณต้องทดสอบด้วยรหัสที่คุณวางแผนจะจัดส่ง
ตัวเลือก A นั้นดีกว่าสำหรับการจำลอง แต่ไม่สามารถปรับใช้ มันเป็นตัวเลือกที่ไร้ประโยชน์ B เป็นรหัสที่นำไปใช้งานดังนั้นการจำลองจะทำงานเหมือนกับระบบจริง
สมมติว่านี่เป็นข้อกังวลที่ถูกต้อง ทางออกที่ดีกว่าคือการแยกการจัดการข้อผิดพลาดออกจากตรรกะของแอปพลิเคชัน
if (var != true || var != false) {
errorReport("Hell just froze over, var must be true or false")
}
......
if (var == true){
....
} else {
....
}
อ่านเพิ่มเติม - เครื่อง Therac-25 Xray ความล้มเหลวของจรวด Ariane 5 และอื่น ๆ (ลิงก์มีลิงก์ที่ใช้งานไม่ได้มากมาย แต่มีข้อมูลเพียงพอที่ Google จะช่วย)