巧用goto语句

本文探讨了在特定业务场景下合理使用goto语句以简化代码、提高效率的方法,具体案例包括用户引导界面设计与人脸识别算法优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们当年在大学学习c语言的时候,讲到goto语句时老师就是一带而过,说了这么一句话,尽量不要多用goto!

对了,是尽量不要多用,而不是说不要用。其实goto语句在某些业务场景下是非常有用的,我下面就稍微讲一两个项目中使用goto语句的场景。

  最近完成了一个学籍照片采集的软件项目开发,其中有两处用了goto语句,这两处goto语句的用法应该是比较适合当做场景来说一说的。

   第一个场景是用户引导界面,由于我们的项目采用c++加MFC的技术框架,业务层采用纯c++,UI采用CDialog,当用户提出需要用户引导界面来执行连接相机、配置工作目录以及导入学籍数据这三个界面的时候,当时挺费了一点神,到底怎么做才能既简单的完成业务需求,有能保持代码简洁。

一下子就想到了goto语句,三个界面分别按顺序来写,然后根据添加相关的条件判断,就是说,如果已经设置了,就不再弹出对话框,最后在条件中添加goto语句,如果是上一步,则goto到上一步的对话框,如果是下一步则如果这一步验证通过则跳转到下一步。

这种场景,采用goto语句可以非常简单的得到处理。

  第二个场景是在处理人脸识别的时候,由于压缩参数的问题,会导致识别出多个人脸的情况,应客户要求,需要增加识别的灵敏度,我们采用的解决方法是,采用双参数模式,如果第一个参数不能完成业务,则使用第二个参数来执行。如果第二个参数执行错误,则直接报错。

这里面有一个业务场景的问题,因为我们的软件对用户的专业要求比较低,人脸是通过程序自动寻找的,所以在某些情况下,由于背景问题,而导致算法检测人脸出错,而这种错误可以通过调整压缩比例来避免。

在这里,我们在执行第一次检测过程后,判断结果,如果检测成功,则继续,如果检测失败,则调整参数重新执行一次,这里重新执行就是使用goto语句直接调整到相应的程序段落。

        这两个地方采用了goto语句,非常优雅而又简洁的解决了问题。

        最后我们总结一下,在哪些情况下可以使用goto语句来解决问题:

   1、整条业务是单线程的,也就是说无论什么时候执行,只有一个线程在执行此段程序;

2、顺序的几段程序之间有一定的承前启后的线性关系的,这种关系是单向的、固定的;

3、在某些条件下,需要修改程序段中的参数值并且重新执行此段程序的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值