Vì lợi ích của cuộc thảo luận của tôi, Bool có thể có 2 trạng thái, Đúng hoặc Sai. Bất cứ điều gì khác là không phù hợp với đặc điểm kỹ thuật langugae lập trình. Nếu chuỗi công cụ của bạn không phù hợp với đặc điểm kỹ thuật của nó, bạn sẽ không có vấn đề gì. Nếu một nhà phát triển tạo ra một loại Bool có nhiều hơn 2 trạng thái, thì đó là điều cuối cùng anh ta sẽ làm trên cơ sở mã của tôi.
Lựa chọn A.
if (var == true) {
...
} else if (var == false) {
...
} else {
...
}
Lựa chọn B
if (var == true) {
...
} else {
...
}
Tôi khẳng định lựa chọn B mạnh mẽ hơn .....
Bất kỳ twit có thể nói với bạn để xử lý các lỗi không mong muốn. Chúng thường dễ dàng phát hiện một khi bạn nghĩ về chúng. Ví dụ mà giáo sư của bạn đưa ra không phải là điều có thể xảy ra, vì vậy đó là một ví dụ rất kém.
A là không thể kiểm tra mà không có khai thác thử nghiệm phức tạp. Nếu bạn không thể tạo ra nó, bạn sẽ thử nó như thế nào? Nếu bạn chưa kiểm tra mã, làm sao bạn biết nó hoạt động? Nếu bạn không biết nó hoạt động, thì bạn không viết phần mềm mạnh mẽ. Tôi nghĩ họ vẫn gọi đó là Catch22 (Phim hay, thỉnh thoảng xem nó).
Tùy chọn B là tầm thường để kiểm tra.
Vấn đề tiếp theo, hãy hỏi giáo sư câu hỏi này "Bạn muốn tôi làm gì với nó nếu Boolean không đúng cũng không sai?" Điều đó sẽ dẫn đến một cuộc thảo luận rất thú vị .....
Hầu hết các trường hợp, một bãi chứa cốt lõi là khủng bố, tệ nhất là nó gây khó chịu cho người dùng hoặc tốn rất nhiều tiền. Điều gì sẽ xảy ra nếu, nói, mô-đun là hệ thống tính toán reentry thời gian thực của tàu con thoi? Bất kỳ câu trả lời nào, cho dù không chính xác đến đâu, không thể tệ hơn việc phá thai, điều này sẽ giết chết người dùng. Vì vậy, phải làm gì, nếu bạn biết câu trả lời có thể sai, hãy chọn 50/50 hoặc hủy bỏ và đi đến thất bại 100%. Nếu tôi là thành viên phi hành đoàn, tôi sẽ lấy 50/50.
Lựa chọn A giết chết tôi Lựa chọn B cho tôi cơ hội sống sót.
Nhưng chờ đã - đó là một mô phỏng của cuộc tái ngộ tàu con thoi - thì sao? Hủy bỏ để bạn biết về nó. Có vẻ đó là một ý hay? - KHÔNG - bởi vì bạn cần kiểm tra với mã bạn định gửi.
Tùy chọn A tốt hơn cho mô phỏng, nhưng không thể triển khai. Tùy chọn B vô dụng là mã được triển khai để mô phỏng thực hiện giống như các hệ thống trực tiếp.
Hãy nói rằng đây là một mối quan tâm hợp lệ. Giải pháp tốt hơn là tách biệt xử lý lỗi khỏi logic ứng dụng.
if (var != true || var != false) {
errorReport("Hell just froze over, var must be true or false")
}
......
if (var == true){
....
} else {
....
}
Đọc xa hơn - Máy Therac-25 Xray, Ariane 5 Rocket thất bại và các thứ khác (Liên kết có nhiều liên kết bị hỏng nhưng đủ thông tin mà Google sẽ giúp)