Hãy xem xét 3 Kịch bản
Kịch bản 1:điều kiện Boolean
if (condition) {}
else {}
Xác định một điều kiện như else if sẽ là không cần thiết, và nó thực sự rõ ràng để người đọc những gì các mã lệnh thực hiện. Không có đối số cho việc sử dụng khác nếu trong trường hợp này.
Kịch bản 2:bang Infinite
Ở đây chúng ta quan tâm đến việc kiểm tra các điều kiện A và B (và vân vân), và chúng ta có thể hoặc không có thể quan tâm đến những gì sẽ xảy ra nếu không ai trong số họ nắm giữ :
if (conditionA) {}
else if (conditionB) {}
else {} // this might be missing as it is in your case
điểm quan trọng ở đây là có không phải là một số hữu hạn các trạng thái lẫn nhau độc quyền, ví dụ: conditionA có thể num % 2 == 0
và conditionB có thể num % 3 == 0
.
Tôi nghĩ rằng việc sử dụng một lượng chi nhánh hợp lý ở đây là điều tự nhiên và mong muốn; nếu các chi nhánh trở nên quá nhiều điều này có thể là một dấu hiệu cho thấy một số sử dụng khôn ngoan của thiết kế OO sẽ dẫn đến những cải tiến bảo trì tuyệt vời.
Kịch bản 3:Finite states
Đây là mặt đất trung bình giữa hai trường hợp đầu tiên: số lượng của các quốc gia là hữu hạn nhưng nhiều hơn hai. Thử nghiệm cho các giá trị của một kiểu enum như là ví dụ điển hình:
if (var == CONSTANT_FOO) {}
else if (var == CONSTANT_BAR) {} // either this,
else {} // or this might be missing
Trong trường hợp này sử dụng một công tắc có lẽ là tốt hơn bởi vì nó ngay lập tức liên lạc với người đọc rằng số lượng của các quốc gia là hữu hạn và đưa ra một gợi ý mạnh mẽ như trong danh sách tất cả các trạng thái có thể được tìm thấy (trong ví dụ này, các hằng số bắt đầu bằng CONSTANT_). Tiêu chí cá nhân của tôi là số lượng các trạng thái mà tôi đang thử nghiệm: nếu nó chỉ là một (nếu không), tôi sẽ sử dụng if; nếu không, một công tắc. Trong mọi trường hợp, tôi sẽ không viết khác nếu trong trường hợp này.
Thêm khác làm khối lỗi chặn trống
Điều này có liên quan trực tiếp đến kịch bản số 2 ở trên. Trừ khi các trạng thái có thể là hữu hạn và được biết đến tại thời gian biên dịch, bạn không thể nói rằng "trong bất kỳ trường hợp nào khác" có nghĩa là đã xảy ra lỗi. Nhìn thấy như trong kịch bản # 2 một chuyển đổi sẽ cảm thấy tự nhiên hơn, tôi cảm thấy rằng bằng cách sử dụng khác theo cách này có một mùi mã xấu.
Sử dụng công tắc có nhánh mặc định thay thế. Nó sẽ truyền đạt ý định của bạn rõ ràng hơn:
switch(direction) {
case 'up': break;
case 'down': break;
default: // put error handling here if you want
}
Điều này có thể tiết hơn một chút, nhưng nó rõ ràng đối với người đọc cách mã dự kiến sẽ hoạt động. Theo tôi, một khối trống khác sẽ trông không tự nhiên và khó hiểu ở đây.
Không bắt buộc phải có người khác nếu có. –
Theo hiểu biết của tôi, không cần phải có người khác bằng bất kỳ ngôn ngữ nào. Nếu không có gì đặc biệt mà bạn muốn làm khi điều kiện if là sai, thì cũng không có nhu cầu hợp lý cho nó. Nó sẽ là một khối trống. – Toast
'else' là một từ khóa tùy chọn trong khối' if/else'. Và, có thể, rằng một logic của mã hướng dẫn của bạn không yêu cầu 'else' –