异想天开

What's the true meaning of light, Could you tell me why

箭头型代码

日期:2017-12-13 19:58:12
  
最后更新日期:2017-12-14 20:04:53
上周本来要写一段多个if嵌套判断的代码,就是俗称箭头型代码,改用另外一种消除箭头型写法。今天又用这种写法写了另外一段代码,感觉非常简洁。假设用嵌套if型,可能写成如下:
[code lang="cpp"]
if (condition1)
{
if(condition2)
{
if (condition3)
{
do_something1();
return;
}
else
{
do_something2();
}
}
}
[/code]
如果按照业务逻辑会写成上诉代码。可以用for循环来替换箭头型代码。
[code lang="cpp"]
for (int i = 0; i < 1; ++i)
{
if (!condition1)
{
break;
}
if (!condition2)
{
break;
}
if (condition3)
{
do_something1();
return;
}
do_something2();
}
[/code]
改用for循环,思路就是尽量让不满足条件的提前早返回,后面处理的就都是正常的代码逻辑。迭代次数为1的循环就像筛子一样,过滤掉异常情况。而且打日志和统计都比较方便。后面一找资料,发现网上已经有这种类似重构方法。留个纪念。
参考:
1.[如何重构“箭头型”代码](https://coolshell.cn/articles/17757.html)