代码美学 - 嵌套

部分文字选自《代码美学》节目

在《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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值