文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
避免 do/while 循环
很多推崇的编程语言,包括Perl,都有do{expression}while(condition)循环。其中的表达式至少会执行一次。下面举个例子:
do/while的奇怪之处是一个代码块是否会执行是由其后的一个条件决定的。通常来讲,逻辑条件应该出现在它们所“保护”的代码之前,这也是if.while和for语句的工作方式。因为你通常会从前向后来读代码,这就使得do/while循环有点不自然了。很多读者最后会读这段代码两遍。
while循环相对更易读,因为你会先读到所有迭代的条件,然后再读到其中的代码块。但仅仅是为了去掉do/while循环而重复一段代码是有点愚蠢的做法:
幸运的是,我们发现实践当中大多数的do/while循环都可以写成这样开头的while循环:
这个版本还有一个好处是对于max_length是0或者node是null的情况它仍然可以工作。
另一个要避免do/while循环的原因是其中的continue语句会很让人迷惑。例如,下面这段代码会做什么?
它会永远循环下去还是只执行一次?大多数程序员都不得不停下来想一想。(它只会循环一次。)
最后,C++的开创者Bjarne Stroustrup讲得好(在《C++程序设计语言》[1]一书中):
我的经验是,do语句是错误和困惑的来源……我倾向于把条件放在“前面我能看到的地方”。其结果是,我倾向于避免使用do语句。
[1]由机械工业出版社引进并出版,英文书名为《The C++Programming Language》。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论