部分文字选自《代码美学》节目
在《Linux内核开发规程》中,Linus Torvalds写过这么一句话:
如果代码嵌套超过了3层,你肯定搞出毛病了,程序需要修改
防止代码嵌套过多层有两种方法:提炼,以及尽早返回
尽早返回
这是一个嵌套4层的函数
int calculate(int top, int bottom)
{
if (top > bottom)
{
int sum = 0;
for (int number = bottom; number <= top; number++)
{
if (number % 2 == 0)
{
sum += number;
}
}
}
else
{
return 0;
}
}
尽早返回指的是:如果一段if
语句检测到输入的参数不符合要求,直接抛出异常或者return 0
尽早返回后,这几行代码就变成了这样
int calculate(int top, int bottom)
{
if (top < bottom)
{
return 0;
}
int sum = 0;
for (int number = bottom; number <= top; number++)
{
if (number % 2 == 0)
{
sum += number;
}
}
}
这样,函数的嵌套深度变成了 3 3 3
提炼
还是刚刚的代码,提炼即使把一些代码给单独组织成函数,比如:我们可以新建一个函数叫做evenAdd
。
int evenAdd(int number, int sum)
{
if (number % 2 == 0)
{
sum += number;
}
return sum;
}
int calculate(int top, int bottom)
{
if (top < bottom)
{
return 0;
}
int sum = 0;
for (int number = bottom; number <= top; number++)
{
sum = evenAdd(number, sum);
}
}
嵌套深度控制在了 2 2 2层。
这种方法可以控制住程序的复杂度,让看代码的人心情愉悦,不会让程序出现太多的bug