控制循環
對於循環來說不要讓讀者看了循環體以後才明白循環的控制。應該把循環看做一個黑盒:外圍程序只知道它的控制條件,卻不知道他的內容。
進入循環
1、只從一個位置進入循環
2、把初始化代碼緊放在循環前面:如果相關的語句分散在一個子程序裏的各處,那麼在修改子程序的時候就容易忽略掉他們,導致不正確的修改。
3、用while表示無限循環
4、在適當的情況下多使用for循環:for信號吧循環的控制代碼集中在一處,從而有助於寫成可讀性強的循環。寫while循環出錯的錯誤就是修改了位於while循環頂部的循環初始化代碼,但卻忘記了修改循環底部的相關代碼。在for循環中,所有相關的代碼全部寫在循環的頂部,因此修改起來更加容易。如果能夠很恰當地用for循環來替換其他類型的循環。
5、在while循環更適用的時候,不要使用for循環
處理好循環體
1、避免空循環
2、把循環內務操作要麼放在循環的開始,要麼放在循環的末尾:所謂的內務操作是控制循環的操作。
3、一個循環只做一件事
退出循環
1、設法確認循環能夠終止
2、使循環終止條件看起來很明顯
3、不要爲了終止循環而胡亂修改for循環的下標
4、避免出現依賴於循環下標最終取值的代碼:更好的做法是在循環體內某個適當的地方把這一最終取值賦給某個變量。
5、考慮使用安全計數器,安全計數器是一個變量,在每次循環都遞增它,以便判斷該循環的執行次數是不是過多。如果程序發生錯誤,可以通過這個計數器來確保所有的循環都終止了。
提前退出循環
1、考慮在while循環中使用break語句而不用布爾標記
2、小心那些有很多break散步其中的循環。使用多個break不一定就是錯,但是如果他們出現在循環中,那麼就一定是一個警告。
3、在循環開始處用continue進行判斷
4、使用break和continue時要小心,使用break消除了把循環看做黑盒的可能性。因爲人們必須閱讀循環體之後才知道break做了哪些控制。
檢查端點
對一個簡單循環,通常需要注意三種情況:開始、任意選擇的中間情況和最終的情況。
使用循環變量
1、用整數或者枚舉類型表示數組和循環邊界
2、在嵌套循環中使用有意義的變量名來提高其可讀性
3、用有意義的名字來避免循環下標串話
4、吧循環下標變量的作用域限制在本循環內
循環應該有多長
1、循環應儘可能端,以便能夠一目瞭然
2、把嵌套限制在3層以內
3、把長循環的內容移到子程序裏
4、要讓長循環格外清晰