代码应该尽可能地减少嵌套,首先处理错误情况/特殊条件,并提前返回或继续循环。减少多层嵌套的代码数量。
Bad
for _, v := range data {
//多层 if/else 循环嵌套
if v.F1 == 1 {
v = process(v)
if err := v.Call(); err == nil {
v.Send()
} else {
return err
}
} else {
log.Printf("Invalid v: %v", v)
}
}
Good
for _, v := range data {
//首先处理特殊条件
if v.F1 != 1 {
log.Printf("Invalid v: %v", v)
//继续循环
continue
}
v = process(v)
//处理错误场景并提前返回
if err := v.Call(); err != nil {
return err
}
v.Send()
}