Đây là một điều tôi đang làm rất nhiều gần đây.
Thí dụ:
setCircle(circle, i, { current }) {
if (i == current) {
circle.src = 'images/25CE.svg'
circle.alt = 'Now picking'
} else if (i < current) {
circle.src = 'images/25C9.svg'
circle.alt = 'Pick failed'
} else if (i > current) {
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
}
Thông thường, thang if / other phức tạp hơn đáng kể so với ...
Xem điều khoản cuối cùng? Nó là dư thừa. Các bậc thang được cho là cuối cùng bắt tất cả các điều kiện có thể. Do đó, nó có thể được viết lại như thế:
setCircle(circle, i, { current }) {
if (i == current) {
circle.src = 'images/25CE.svg'
circle.alt = 'Now picking'
} else if (i < current) {
circle.src = 'images/25C9.svg'
circle.alt = 'Pick failed'
} else {
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
}
Đây là cách tôi thường viết mã, nhưng tôi không thích phong cách này. Khiếu nại của tôi là điều kiện theo đó phần cuối của mã sẽ được thực thi không rõ ràng từ mã. Do đó tôi bắt đầu viết điều kiện này một cách rõ ràng để làm cho nó rõ ràng hơn.
Tuy nhiên:
- Hoàn toàn viết ra điều kiện đầy đủ cuối cùng là ý tưởng của riêng tôi và tôi có những trải nghiệm tồi tệ với ý tưởng của riêng mình - thường mọi người hét lên với tôi về những gì tôi đang làm là khủng khiếp - và (đôi khi nhiều) sau đó tôi phát hiện ra rằng đó thực sự là tối ưu;
- Một gợi ý tại sao điều này có thể là một ý tưởng tồi: Không thể áp dụng cho Javascript, nhưng trong các ngôn ngữ khác, trình biên dịch có xu hướng đưa ra cảnh báo hoặc thậm chí lỗi về việc kiểm soát đến cuối chức năng. Gợi ý làm điều gì đó như thế có thể không quá phổ biến hoặc tôi đang làm sai.
- Trình biên dịch khiếu nại khiến tôi đôi khi viết điều kiện cuối cùng trong một bình luận, nhưng tôi đoán làm như vậy thật kinh khủng vì các bình luận, không giống như mã, không ảnh hưởng đến ngữ nghĩa chương trình thực tế:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Tui bỏ lỡ điều gì vậy? Hoặc nó có ổn để làm những gì tôi mô tả hay đó là một ý tưởng tồi?