我最近問了一位應用程序架構師在工作中查看我編寫的一個php
腳本,用於自動執行我在幫助臺部門每週執行的一些任務。爲什麼在for循環的條件下調用函數是不好的?
在他的評論中他說
## Loops
Your loops are good, you didn't do anything bad like calling functions in the condition
for ($i=0; $i < count($array); $i++); is BAD
老實說,我從來沒有試着做,在我的代碼之前,但它使我想知道爲什麼它會壞。
我認爲這是因爲,函數的結果可能是任何值,它似乎是一個創建無限循環的完美方式,並且通常會導致意外的行爲。
我試着用搜索引擎,但讓我問找不到任何相關的結果:
爲什麼這樣做不好調用函數中的for循環的條件?
注意在評論本身count($array)
是,對我來說,一個給我。當然,你只想緩存它。更具體地說,我的意思是在使用其他更復雜的功能的情況下。
對於那些一定會懷疑「爲什麼不問它是誰寫的傢伙」,他是超級忙碌,已經花時間來幫助我,我不希望推動與太遠「現在,你能向我解釋你的所有意見嗎?「
原因函數在每次循環迭代時都會被重複調用,否? –
我不確定這是否是代碼審查中的偏見和更好的。無論如何,因爲你會在循環的每一次迭代中調用函數,並帶來額外的開銷。只需在循環外存儲count()結果並使用變量 –
就我的觀點而言,避免它的唯一原因是,例如, _count($ array)_必須在每次執行_for_時進行評估,但如果在循環之外完成,顯然將僅評估一次。 – hherger