Khi xem xét, đôi khi tôi gặp phải loại vòng lặp:Phần tử cuối cùng trong một vòng lặp xứng đáng được xử lý riêng biệt?
i = begin
while (i != end) {
// ... do stuff
if (i == end-1 (the one-but-last element)) {
... do other stuff
}
increment i
}
Sau đó, tôi đặt câu hỏi: bạn sẽ viết này?
i = begin
mid = (end - begin)/2 // (the middle element)
while (i != end) {
// ... do stuff
if (i > mid) {
... do other stuff
}
increment i
}
Theo ý kiến của tôi, điều này có ý nghĩa đối với từng yếu tố. Sử dụng cấu trúc này, đối với một số yếu tố bạn làm điều gì đó khác biệt. Vì vậy, tôi kết luận, bạn cần một vòng lặp riêng biệt đối với những yếu tố:
i = begin
mid = (end - begin)/2 //(the middle element)
while (i != mid) {
// ... do stuff
increment i
}
while (i != end) {
// ... do stuff
// ... do other stuff
increment i
}
Bây giờ tôi thậm chí nhìn thấy một question trên SO về cách viết các if
-clause một cách thoải mái ... Và tôi đã buồn: một cái gì đó không phải ở đây.
Tôi có sai không? Nếu vậy, những gì tốt như vậy về việc làm lộn xộn cơ thể vòng lặp với các trường hợp đặc biệt, mà bạn nhận thức được trả trước, tại thời điểm mã hóa?
Tất cả điều này là rất tốt. Tôi có thể cải thiện phong cách làm việc cá nhân của mình. Thx –
"bạn lặp lại vì có điều gì đó thường được thực hiện cho từng yếu tố." Nó phụ thuộc như thế nào chung rằng "cái gì" là. Nó có thể được phổ biến chỉ là tất cả các yếu tố là xe ô tô. Một số có màu xanh, một số khác có màu đỏ. Nếu màu xanh sau đó chọn màu xanh, nếu màu đỏ thì chọn màu đỏ để vẽ. Vì vậy, tại một thời điểm nhất định, các quyết định trong vòng lặp có thể có ý nghĩa mặc dù. Nhưng tại một số điểm, nó sẽ trở nên rõ ràng bạn nên chia vòng lặp. –
@peter_the_oak: Tôi đồng ý rằng bạn đưa ra quyết định dựa trên giá trị bạn gặp phải trong vòng lặp, nhưng không dựa trên chỉ mục. – xtofl