void foobar(x, y, z) {
px = get_x(x);
if (0 != check_x(px))
return ERROR;
py = get_y(y);
if (0 != check_y(py))
return ERROR;
if (0 != z)
return ERROR;
}
經常會看到類似上面的代碼,每次看到都會吐槽:寫這樣代碼的人,肯定沒有動腦、不用心。
這樣的代碼往往是編碼的人,簡單地、機械地根據業務需求說明書,把業務邏輯翻譯成代碼邏輯,整個翻譯過程中就沒有考慮過代碼的效率問題 —— 而這也是我認爲的“碼農”和“程序員”最基本的區別。
上面的代碼中,如果get_x/y或check_x/y裏面做了很複雜的計算,然後'z'不等於零,函數還是返回錯誤,前面一堆複雜的計算豈不是白做了?因此,對於這種有各種不同檢查邏輯的函數,應該儘量把簡單的邏輯往前放,複雜的邏輯往後面放,以減少不必要的計算,浪費系統的資源。