Đôi khi tôi vấp phải mã tương tự như ví dụ sau (chức năng này thực hiện chính xác nằm ngoài phạm vi của câu hỏi này):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Như bạn có thể thấy, if
, else if
và else
báo cáo được sử dụng kết hợp với return
tuyên bố. Điều này có vẻ khá trực quan đối với một người quan sát thông thường, nhưng tôi nghĩ nó sẽ thanh lịch hơn (theo quan điểm của một nhà phát triển phần mềm) để bỏ các else
-s và đơn giản hóa mã như thế này:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Điều này có ý nghĩa, vì mọi thứ tuân theo một return
câu lệnh (trong cùng phạm vi) sẽ không bao giờ được thực thi, làm cho mã ở trên về mặt ngữ nghĩa bằng với ví dụ đầu tiên.
Điều nào ở trên phù hợp với thực tiễn mã hóa tốt hơn? Có bất kỳ nhược điểm nào đối với một trong hai phương pháp liên quan đến khả năng đọc mã không?
Chỉnh sửa: Một đề xuất trùng lặp đã được đưa ra với câu hỏi này được cung cấp làm tài liệu tham khảo. Tôi tin rằng câu hỏi của tôi chạm vào một chủ đề khác, vì tôi không hỏi về việc tránh các câu trùng lặp như được trình bày trong câu hỏi khác. Cả hai câu hỏi đều tìm cách giảm sự lặp lại, mặc dù theo những cách hơi khác nhau.
-1
là một số, false
là một boolean và value
không được chỉ định ở đây vì vậy nó có thể là bất kỳ loại đối tượng nào.
value
nó thực sự là một số nguyên. Nếu nó có thể là bất cứ điều gì thì điều đó thậm chí còn tồi tệ hơn.
else
là một vấn đề nhỏ hơn, vấn đề lớn hơn là bạn rõ ràng đang trả lại hai loại dữ liệu từ một hàm duy nhất, điều này làm cho API của hàm không thể đoán trước được.