【C#编程最佳实践 十一】降低圈复杂度最佳实践
什么是圈复杂度
圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系。
一般指代码中的分支数量,比如有一个if分支,代码复杂度就加1,如果if中有“||”或者“&&”那么代码复杂度就加2,for和while同理。
最佳实践
战略实践
核心思想
1,业务为核心,不能单纯的想着降低复杂度,应该是业务上简化逻辑,然后自然而然的降低复杂度
2,复杂的封装或转换逻辑挪到一个转换中心去统一管理,降低耦合
3,多方法代替一个方法的大量代码,也就是低耦合,高内聚
战术实践
多if-else语句
多if分支语句可以采用switch - case来代替(尤其是条件较为明确的)
修改前圈复杂度为5
if (item.Type==1) {
tenantType = "正式租户";
}
else if (item.Type == 1)
{
tenantType = "测试租户";
}
else if (item.Type == 1)
{
tenantType = "最佳实践租户";
}
修改后圈复杂度为3
switch (item.Type)
{
case 1:
tenantType = "正式租户";
break;
case 2:
tenantType = "测试租户";
break;
case 3:
tenantType = "最佳实践租户";
break;
}