本文僅從代碼美學角度出發,非探討技術邏輯。以下為七大原則之首:
反面教材:巢狀 if 導致程式碼向右漂移,難以閱讀:
function findShape(flags, point, attribute, list) {
if(!findShapePoints(flags, point, attribute)) {
if(!doFindShapePoints(flags, point, attribute)) {
if(!findInShape(flags, point, attribute)) {
if(!findFromGuide(flags,point)) {
if(list.count() > 0 && flags == 1) { doSomething(); }
}
}
}
}
}
優化後:提前返回,扁平化邏輯:
function findShape(flags, point, attribute, list) {
if(findShapePoints(flags, point, attribute)) return;
if(doFindShapePoints(flags, point, attribute)) return;
if(findInShape(flags, point, attribute)) return;
if(findFromGuide(flags,point)) return;
if(!(list.count() > 0 && flags == 1)) return;
doSomething();
}
核心思想:避免不必要的 else,善用提前返回,讓主流程保持在最左側,降低認知負荷。其餘六大原則(命名、縮排、註釋、函數長度、模組化、一致性)將於後續文章闡述。