为什么许多程序员极少使用break或者continue语句?

写程序应该尽量避免使用break和continue。

转载来源:https://baijiahao.baidu.com/s?id=1681625635828356267&wfr=spider&for=pc

for、while循环语句里出现return是没有问题的,但如果你的循环里出现了break和continue,往往是因为对循环的逻辑没有考虑清楚,考虑周全了基本不需要break和continue。因为用了break和continue之后会让循环的逻辑和终止的条件变得复杂,难以确保正确的结果。

情景一:下面一段代码表示name里含有“bad”这个词,就跳过后面的循环代码

这是一种“负面”的描述,它不是告诉你什么时候“做”一件事,而是告诉你什么时候“不做”一件事。想要弄清楚它到底要干什么,就必须搞清楚continue会导致哪些语句被跳过了,然后脑袋得有个逆向逻辑,才能知道它到底想做什么。

这就是为什么含有break和continue的循环很难理解,它们靠“控制流”来描述“不做什么”,而“跳过做什么”,到最后你也没有搞清楚它到底“要做什么”。

其实上面的代码完全可以摒弃continue:

这种代码是一种更加“正面”的描述,表示name不含“bad”的时候,就将它加到goodNames的链表里。当你再次读到这段代码时,脑海中就能清晰地呈现出它的条理和结构。 

情景二:for和while循环头部有唯一终止循环的条件,但在循环体中加入break,实际增加了一个退出条件

当condition2成立的时候,break就会退出循环。但往往只需要把这个条件合并到循环头部,就可以去掉break,而不需要再进行逆向思维。

情景三:很多break退出循环后,接下来就是一个return

下面函数检查names链表里是否存在一个名字,包含“bad”,包含就通过break跳出,并通过return返回结果。 

这种break往往可以直接换成return true,而不是对result变量进行赋值,需要通过break出去后,最后才通过return返回。如果循环结束了还没有return,就返回false。 改完后同时消除了break语句和result这个变量。

很多的例子通过消除continue和break,无一例外使得代码变得条理清晰、容易理解,也更容易确保正确结果。如果代码中出现了continue可以将continue的条件方向反转,如果代码中出现了break可以将break的条件合并到循环头部的终止条件里以去掉break,而剩下的1%特别复杂的逻辑可以把循环里复杂的部分提取出来做成函数调用,这样就彻底地消除了continue和break。

编程不仅仅是一门技术,更是一门艺术。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值