Rõ ràng, câu hỏi của bạn không phải là về việc ngắn mạch nói chung là tốt hay xấu, mà là về lý do tại sao VB.NET cung cấp các toán tử có và không có nó. Với suy nghĩ này, câu trả lời cho
Khi nào thì đánh giá ngắn mạch xấu?
chỉ đơn giản là: khi nó vi phạm khả năng tương thích ngược .
Ok, bây giờ bạn có thể nói VB.NET không tương thích ngược với VB6 hoặc VBA cũ, tuy nhiên ít nhất một số phần của ngôn ngữ là. Quyết định của Microsoft về việc giữ ngữ nghĩa AND và OR cũ (không bị đoản mạch) đã tạo ra một loại lỗi rất lớn ít xảy ra khi chuyển các chương trình VB cũ sang VB.NET.
Mặt khác, các nhà thiết kế ngôn ngữ VB.NET có thể đã chia sẻ ý kiến của bạn về việc đoản mạch là một điều tốt. Khi tôi nhớ chính xác, các phiên bản tiền phát hành VB.NET đầu tiên cung cấp cho các toán tử AND hoặc OR bị đoản mạch, nhưng phản hồi của nhà phát triển phải rất tệ khi MS rút quyết định này trước khi VB.NET 1.0 xuất hiện. Vì vậy, các nhà thiết kế đã quyết định triển khai nó theo các từ khóa mới ANDALSO
và ORELSE
như một sự đánh đổi giữa tính tương thích và tính hữu dụng ngược.
IMHO đây là một quyết định tốt. Tôi đã phải chuyển một số chương trình cũ hơn trong thập kỷ qua và không phải phân tích tác động nặng nề cho mọi biểu hiện logic bao gồm AND và / hoặc OR (ý định chơi chữ) khiến cho công việc đó trở nên dễ dàng và kinh tế hơn rất nhiều. Mặt khác, bất cứ khi nào tôi phải viết một biểu thức logic mới trong VB.NET, lựa chọn mặc định của tôi cho các toán tử là các dạng ngắn mạch, đó là những gì tôi đã sử dụng từ C, C ++, C #, v.v. tôi viết một số thành ngữ ở dạng ngắn gọn hơn (ngay cả khi ANDALSO cần thêm 4 ký tự để gõ).
Nếu bạn không bị thuyết phục, tôi khuyên bạn nên đọc bài viết tuyệt vời của Joel Spolsky về Tai nghe sao Hỏa , đó là lý do tại sao các quyết định thiết kế ban đầu trong phát triển phần mềm có thể dễ dàng bị thu hồi sau khi thành phần hoặc ngôn ngữ hoặc API được đặt ở một cơ sở người dùng có kích thước nhất định .