为什么许多程序员从来都不用break或者continue语句(程序员为什么能运行 为什么不能运行)

匿名- 2023-08-04 07:59:53

JAVA的死循环与break和continue

style="text-indent:2em;">大家好,感谢邀请,今天来为大家分享一下为什么许多程序员从来都不用break或者continue语句的问题,以及和为啥不建议用递归的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

本文目录

  1. 用递等式时能不能用五个等于
  2. 如何将C语言的递归学好
  3. 为什么很多公司选择不升级JDK版本,仍然使用JDK8
  4. 为什么许多程序员从来都不用break或者continue语句

用递等式时能不能用五个等于

不能因为递等式中每个等号都表示相等的关系,如果用五个等于,就表示等号两边相等的关系出现了五次,这显然是多余和冗余的表达方式。在递等式的应用中,可以使用类似于等同符号(≡)或箭头(→)等来表示递推的关系,使得表达更加简洁明了。

如何将C语言的递归学好

说实在的,除了贪心算法动态规划之类的算法用递归做比较容易之外,还是不要用递归比较好。首先,递归的开销过大。其次,c语言是过程性语言,是从上往下一步一步执行的,所以使用迭代能更好的理解逻辑。如果执意要学递归这门艺术(没错,优秀的递归就是艺术的化身),就学函数式语言。推荐lisp。

为什么很多公司选择不升级JDK版本,仍然使用JDK8

对于新的项目更高版本的jdk时没有问题的,如果开发项目选jdk当然会选高版本(虽然说高版本有不稳定因素)。但对于已经完成的项目是否需要升级jdk我觉得是有待商榷的,jdk升了代码要不要重写?架构要不要重构?这些只是技术方面的问题,更大的阻碍在领导那边,只有当你切切实实能拿出收益的时候这个事情才能推行下去。比如6到8性能是有很大进步的,synchronized进行了优化引入了偏向锁轻量级锁适应性自选,HashMap用尾递归解决了环形链表,ConcurrentHashMap的锁粒度到了节点,等等很多你甚至不用改代码就能得到的性能提升,内存方面可以使用G1了(非默认需要在jvm参数中指定)在某些业务下对内存的利用更加充分,上述的变化带的是用户体验的提升是硬件成本的减少,没有几个真的懂且想做实事的领导会拒绝。反观11带来的收益更多的是针对开发的,类型推断用的多爽,我希望后续还可以根据类自动生成接口呢,但语法糖这种东西只会让我们爽,你的项目经理看到的确是没有明显的收益和带来的稳定性的挑战。

总结:目前成熟的公司基本上都有一套写好的基线版本java代码,有自己的规范和约束,换高版本就会涉及到一些升级兼容,未知bug修改等工作量去做。对于公司来说,这个研发成本是不可控的,毕竟公司还是以盈利为目的。

为什么许多程序员从来都不用break或者continue语句

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

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

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

编程不当当是一门技术,而且是一门艺术。

编程是一种创造性的工作,并不是说你写了多少多少万行代码了你就很牛逼。如果总是匆匆忙忙写出了代码,却不会回过头的推敲、修改和提炼,是很难精通这门艺术的。一个好的程序员删掉的代码比留下来的代码要多得多,如果你看见他写了很多代码,却没有删掉多少,那他的代码中一定有很多的垃圾。

好的代码不可能一蹴而就,代码灵感总是零零星星的陆续到来,所以再厉害的程序员都是通过很长一段时间的沉淀才能写出简单而优雅的代码。如果此时你反复提炼代码已经不再有进展不烦暂时放下过几个星期或者几个月再回过头来看,又会获得焕然一新的灵感。

以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

文章分享结束,为什么许多程序员从来都不用break或者continue语句和为啥不建议用递归的答案你都知道了吗?欢迎再次光临本站哦!

循环控制语句Break和Continue的区别
  • 声明:本文内容来自互联网不代表本站观点,转载请注明出处:bk.0755org.com/1/83768.html
上一篇:为什么羽毛球严格分单双打(羽毛球单双打区别)
下一篇:为什么粉饼用了眼睛不舒服(为什么一用粉饼脸就过敏)
相关文章
返回顶部小火箭