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

发布于2022-01-13 09:48:54
10个回答
admin
网友回答2022-01-13

编码过程中,循环逻辑处理是用到break和continue语句较多的场景。不管哪种编程语言,通常情况下break语句是跳出循环,continue语句符合某种条件,不执行循环体余下的语句。不用这两个语句是由具体的业务场景决定,与程序员的习惯和水平关系不大

如果你用到多线程,就会发现这两个语句是大家的最亲密伙伴没有之一。多线程编程时必须要解决主线程不能比其他线程更早结束的问题,否则会出现不可预知的结果。在主线程退出之前使用以下语句阻塞,以防止程序自行退出。

while(true)

{

if(结束条件)

break

if(休眠条件)

Sleep(休眠时间)

continue

………

………

}。

这段代码在项目中,尤其是使用开发框架开发的朋友,很少留意这段代码。深究下来,底层的处理逻辑一定会有类似的处理存在。这么处理的原因也不难理解,while循环如果没有退出条件的话,就陷入死循环,不适当休眠的话,会一直占用CPU处理时间片。直观反应是前者程序无法自动退出,后者的CPU占用率持续为100%。

除此此外,swicht语句伴随的case语句也是必须使用break语句结束判断条件,否则会继续执行后续的语句。

综上所述,break语句或者continue语句会随着编码经历的增长,应用越来越多。

admin
网友回答2022-01-13

break是什么,处理到特定结果后跳出循环,执行后续逻辑。

continue呢,有些逻辑只需要执行一部分,不满足条件后续的逻辑需要跳过,切换到下一个元素操作。

还有void类型的函数,使用return;

这些使用都是正常的,并且非常推荐的,楼上博主居然不推荐使用这些?我就很好奇你的代码不凌乱么,谁会去看你的层层嵌套if,else。还是觉得看break和continue的逻辑复杂么?如果是对这个都感觉复杂,emmm... 感觉...

总之,这两个语法是非常建议使用的。有本书可以参考《重构改变现有的设计》

去上是我的观点,欢迎大家讨论

admin
网友回答2022-01-13

如果要把原因排序,那么第一个一定是业务不需要。

admin
网友回答2022-01-13

我不是开发人员,但是也编了不少工具、脚本,仅仅发表一些看法。


其实适合自己就是最好的,先实现功能,再优化,没有绝对的说法。


代码示例1

以上这个代码,其实都可以实现功能,但是有时候print(result) 换成一个业务复杂的逻辑,用continue也是可以偷偷懒,但是还是要保持代码的易读性。而B的写法,如果包括的内容太长,也是不太好看。

我还是喜欢偷偷懒。


代码示例2



如果循环体后面没有其他业务逻辑,break可以直接用return来替代。




如果循环体后面有其他业务逻辑,我还是喜欢用break。



结束语


我不是开发人员,所以也只是以自己的理解来解答这个问题。但是不管如何,好的代码都是经过不断的编程、推敲、优化后形成。还是那句话:适合自己、适应实际需求实现才是王道。

admin
网友回答2022-01-13

你好,我是只说代码的大饼,我来回答下你问题。

我觉得问题应该改下,哪些类型的程序员不用常用、或者不用break或者continue关键字?

进入正题,我分如下几点分析下:

一.不用或者不常用break或者continue关键字:

1.用汇编语言的程序程序员,(好像)没有这两个关键字,都是用“J”字母开头的指令跳转,例如JMP。

2.算法牛逼的程序员。

3.熟悉自己所用编程语言封装的各种查找方法的程序员。


二.常用break或者continue关键字:

1.刚入门的程序员。

2.不熟悉各种快捷查找的程序员。

3.喜欢用简单粗暴方法解决问题的程序员,没有循环解决不了的,哈哈。

总结:

个人觉得,在没有很好解决办法时,break、continue是循环体内很好的解决办法。

取到自己想要的数据后break掉循环,减少循环次数,提高效率。过滤自己不想要的数 据,continue直接跳出本次循环,执行下一次循环。

回答完毕,谢谢。

admin
网友回答2022-01-13

别说break continue了,goto我都用。

编程是用来解决实际问题的,不要太教条。

admin
网友回答2022-01-13

在循环体内,break肯定是经常使用的,找到了我需要的数据后,就不再继续往后执行循环了,就使用break跳出循环,提高了运行效率,也对执行结果的正确性有影响,结果可能不是想要的值。

continue的作用就是也是减少后续语句的执行,跳到下个循环变量再继续执行,也是提高运行的效率,对程序的结果通常无影响。如果不考虑程序的可读性,当然可以利用很多的if嵌套实现相同的效果。

是否写break,continue,循环次数少的,影响不大,如果循环次数多的,判断条件多的,且查找的结果比较靠后,对效率影响巨大。这2个用不好,可以说不是一个合格的开发人员。

上述仅仅针对c语音,其他语言没写过,理论上也是一样。

admin
网友回答2022-01-13

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

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

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

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

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


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

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

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

admin
网友回答2022-01-13

很多人都从语法层面去想,那肯定是很难理解的,毕竟存在就是合理,如果这两个东西有问题,就不会出现。 有公司禁止,主要是要降低项目复杂性,一个团队有高手有菜鸟,还有人员流转问题,还有后期维护问题,一个函数如果有嵌套几个循环各种break continue ,你写的时候可能觉得没问题,但接手的人可能要分析半天,还容易出错。 不能只从自己的角度去分析一个问题的合理性

admin
网友回答2022-01-13

源码用break return做短路返回太正常了,一帮菜鸟带啥节奏呢?

回到
顶部