Three-C
首先告訴你結論:是規範
那麼這個規範是必須遵守的嗎?
結果是不是的。在寫代碼過程中,必須保證代碼的可讀性,穩定性,儘可能的不要出現bug。而在這個基礎上,代碼卻是由業務驅動的,可能由於業務的特性,你不得不打破這一條規律,那麼你只需要保證的是,不要造成死循環,在循環中一定要有break等字眼來終結循環條件。
因此,這裡需要明確2點:
1.代碼的規範之所以是規範,是為了保證代碼在大部分情況下,都能保證自身的穩定性。
2.以業務驅動的代碼邏輯,並不會完全遵循代碼本身的規範,具體的實現並不能依靠規範本身去維護代碼的穩定性,而需要你自身的邏輯去補充。
方方方的偽宅
你好,不知道你說的這個改變循環變量是指的foreach的循環變量名不能改變還是說for循環中不能改變集合中的元素。
如果是第一種,我認為應該算是一種語言規範,尤其在foreach循環中比較明顯,其實這個變量名一般不變是因為我們不會對這個變量名稱做過多的處理,它其實就是一箇中間的臨時變量,類似於我們有一個數組,數組的每一個元素在參與邏輯處理時首先都會先獲取到這個元素,比如Array[i],這時候我們就可以直接用它來處理業務邏輯,但是由於foreach循環中無法這樣來獲取,所以就給了一個臨時變量,而且每一次循環的變量名稱都一樣。
如果是第二種,我認為這個肯定不是規範,而且我們在很多業務中都會去修改對應的變量,包括更新或者刪除,當然處理這些業務的時候需要使用迭代器,但是循環變量肯定是可以修改的。
低調著末路
你應該是說遍歷集合,顯示改變集合大小會觸發fast fail異常對吧?用迭代器就完事了!java 8後用stream遍歷