Vì vậy, trong Python (mặc dù tôi nghĩ rằng nó có thể được áp dụng cho nhiều ngôn ngữ), tôi thấy mình với một cái gì đó như thế này khá thường xuyên:dư thừa nhỏ mã trong khi-vòng (không cảm thấy sạch)
the_input = raw_input("what to print?\n")
while the_input != "quit":
print the_input
the_input = raw_input("what to print?\n")
Có lẽ tôi quá cầu kỳ, nhưng tôi không thích cách đường dây the_input = raw_input("what to print?\n")
phải lặp lại. Nó làm giảm khả năng bảo trì và tổ chức. Nhưng tôi không thấy bất kỳ giải pháp nào để tránh mã trùng lặp mà không làm xấu đi vấn đề. Trong một số ngôn ngữ, tôi có thể viết một cái gì đó như thế này:
while ((the_input=raw_input("what to print?\n")) != "quit") {
print the_input
}
này chắc chắn là không Pythonic, và Python thậm chí không cho phép chuyển nhượng trong điều kiện vòng lặp AFAIK.
mã hợp lệ này sửa chữa các dư thừa,
while 1:
the_input = raw_input("what to print?\n")
if the_input == "quit":
break
print the_input
Nhưng không cảm thấy hoàn toàn đúng một trong hai. while 1
ngụ ý rằng vòng lặp này sẽ chạy mãi mãi; Tôi đang sử dụng một vòng lặp, nhưng cho nó một điều kiện giả mạo và đặt một thực tế bên trong nó.
Tôi có quá cầu kỳ không? Có cách nào tốt hơn để làm điều này? Có lẽ có một số ngôn ngữ xây dựng được thiết kế cho điều này mà tôi không biết?
Tôi nghĩ rằng biểu mẫu đầu tiên hoàn toàn có thể chấp nhận được. –
Đây là một mẫu phổ biến được gọi là [vòng lặp và một nửa] (http://www.cs.duke.edu/~ola/patterns/plopd/loops.html#loop-and-a-half). –