當我在大學(80年代中期)上CS時,不斷重復的想法之一就是總是編寫循環,在測試的頂部(while ...)而不是底部(do ... while)進行測試。環。這些概念通常以研究為依據,這些研究表明,在頂部進行測試的循環比在底部進行測試的循環更可能是正確的。結果,我幾乎總是寫在最上面測試的循環。如果它在代碼中引入了額外的復雜性,我不會這樣做,但是這種情況似乎很少。我注意到有些程序員傾向于幾乎完全編寫在底部進行測試的循環。當我看到類似的構造:if (condition){ do { ... } while (same condition);}或反數(if在里面while),這使我想知道他們是否實際上是這樣寫的,或者if當他們意識到循環不處理空值情況時是否添加了語句。我已經進行了一些谷歌搜索,但是未能找到有關該主題的任何文獻。你們(和女孩)如何編寫循環?
3 回答

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
我始終遵循以下規則:如果它應該運行零次或多次,請在開始時進行測試;如果它必須運行一次或多次,請在最后進行測試。我看不到使用您在示例中列出的代碼的任何邏輯原因。它只會增加復雜性。

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
如果要在循環的第一次迭代之前測試條件,請使用while循環。
當您要在運行循環的第一次迭代后測試條件時,請使用do-while循環。
例如,如果您發現自己正在執行以下兩個片段之一:
func();
while (condition) {
func();
}
//or:
while (true){
func();
if (!condition) break;
}
您應該將其重寫為:
do{
func();
} while(condition);

DIEA
TA貢獻1820條經驗 獲得超2個贊
避免do/ while確實有助于使我的代碼更具可讀性嗎?
沒有。
如果使用do/ while循環更有意義,請這樣做。如果需要在測試條件之前執行一次循環主體,則do/ while循環可能是最直接的實現。
添加回答
舉報
0/150
提交
取消