结论先行:减少代码嵌套就是降低复杂度。
资源管理一向是编程中的重要任务。当一个函数要管理多个资源时,很容易出现代码嵌套层级太深的问题,尤其是调用系统或第三方 API 时。
以 C 语言代码为例,这里简化为两个资源,请您自行脑补多个资源:
int error_code = 0;
resource1 *p1 = new_resource1();
// UMU: with C++ SHOULD be `p1 != nullptr`
if (p1) {
resource2 *p2 = new_resource2();
if (p2) {
if (!deal_resources(p1, p2)) {
error_code = 3;
}
free_new_resource2(p2);
} else {
error_code = 2;
}
free_new_resource1(p1);
} else {}
error_code = 1;
}
return error_code;
上面代码最深嵌套是三层,为了减少嵌套,可以把代码改为平坦结构,降低到一层: