進行審覈時,我有時會遇到這樣一種循環:循環中的最後一個元素是否應該單獨處理?
i = begin
while (i != end) {
// ... do stuff
if (i == end-1 (the one-but-last element)) {
... do other stuff
}
increment i
}
然後,我問一個問題:你寫的嗎?
i = begin
mid = (end - begin)/2 // (the middle element)
while (i != end) {
// ... do stuff
if (i > mid) {
... do other stuff
}
increment i
}
在我看來,這個節拍編寫循環的意圖:你循環,因爲有共同的每個元素做一些東西。使用這個構造,對於你做一些不同的元素。所以,我的結論,你需要這些元素單獨的循環:
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
}
現在我甚至對等如何寫在一個不錯的方式if
-clause看到question ...而我難過:什麼不在這裏。
我錯了嗎?如果是這樣的話,那麼在編碼的時候有什麼特別的情況讓您瞭解到循環體的特點?
的情況下,這一切都是巨大的。我可以改善我的個人工作風格。 Thx – 2014-07-10 18:13:46
「你循環,因爲每個元素都有一些共同點。」這取決於這個「東西」是多麼普遍。所有元素都是汽車可能很常見。有些是藍色的,有些則是紅色的。如果藍色,然後選擇藍色,如果紅色,然後選擇紅色的顏色。所以在某一點上,循環中的決定可能是有道理的。但在某些時候,你應該明白你應該分裂循環。 – 2014-07-11 09:33:25
@peter_the_oak:我同意你根據你在循環中遇到的值做出決定,但不是基於索引。 – xtofl 2014-07-11 14:07:36