Đây là một vấn đề rất nhỏ: Có bốn hàm boolean: a(), b(), c() và d(). Tôi muốn tiếp tục gọi họ theo thứ tự cho đến khi người đầu tiên trả về true
. thay vì làm truyền thốngThay thế các chuỗi bị xích với các hoạt động ngắn mạch
if(!a()) {
if(!b()) {
if(!c()) {
d();
}
}
}
hoặc
if(!a() && !b() && !c()) d();
tôi nghĩ về cách viết các biểu hiện như một đánh giá ngắn mạch.
(a() || b() || c() || d());
Nhưng tôi chưa bao giờ thấy thử nghiệm này được thực hiện theo cách này trong mã C/C++. Có bất kỳ vấn đề với phương pháp này mà tôi đang thiếu?
Cảm ơn.
Tôi có thể thấy * năm * hàm boolean. –
@chris hoặc không thay đổi ý nghĩa: d() chỉ được thực thi nếu tất cả các hàm khác là sai. – Loghorn
Tôi khuyên bạn nên chống lại điều này từ một quan điểm bảo trì. Nó có thể không được ngay lập tức rõ ràng cho mọi người những gì mã không khi họ nhìn thấy các phiên bản ngắn mạch (nếu đó là một mối quan tâm cho bạn). Thực tế là bạn phải hỏi về hành vi tại SO phải là một gợi ý về những gì sẽ xảy ra khi người khác đọc mã của bạn. – Michael