五句应该被淘汰的语句

8 篇文章 0 订阅
7 篇文章 0 订阅


今天也顺应一下CSDN的文风,来写一篇小品文。在我们众多的编程语言中,我认为有五句应该被淘汰的语句。


5. C/C++中的没有break检查的switch。无论是不需要break语句的Visual Basic中的SELECT CASE,还是ABAP中的CASE WHEN,还是python中索性对switch不支持,还是C#中对break的严格检查,都表明没有break检查是不友好的。如果不是一直写C/C++程序,有时会忘记switch的条件分支之后要break。


4. continue。continue的问题是,改变了程序的执行流,而这一执行流原本可以通过if语句来实现,将显得更为清晰。continue唯一的好处就是可以减少一层缩进,但除此之外就没有什么别的用处了。


3. return。return有两个毛病——一是函数的流到return语句处中止,使得读函数的人不得不小心所有的return语句,因为除了函数自然中止之外,所有return语句也都是函数退出的地方。二是,return语句只能返回一个返回值。当想返回多个返回值时,C/C++的做法通常是把一个结构或对象的指针或引用当作参数传入,并修改这个结构或对象。C#/Java/JavaScript等语言除了用这种做法之外,还可以返回一个复杂对象,它的多个成员表示出多个要返回的内容。这里不得不提ABAP这门语言。它的函数参数有多个输入值,多个输出值,还可以有多个修改值,在编程时这个特性显得相当方便。做得更好用的是python,它的返回值可以是一个元组,这样就能自然地返回多个值,并且在一行语句上将多个变量赋值。


好的调试器可以在函数末尾设置断点,在return执行的情况下,该断点依然能被触发。


2. catch(...)。这是C++/JavaScript中的万种bug之源。由于没有单根的异常类继承体系,任何东西都可以被当作异常抛出来,乃至可以只抛一个不知所云的整数作为异常。这使得程序调试变得非常麻烦。人工应对之法是找到重现步骤,然后在调试器中反复重现,反复人工二分查找来找到异常究竟是哪里抛出来的,再确定异常到底是什么。相比之下,python、C#、Java这些有异常栈跟踪的语言,会在这方面显著减少程序员的工作量。


1. goto。这个看似不必说,但实际上要说一下。在结构化编程被广泛应用以前,goto语句是重要的跳转语句,其重要性如同汇编编程中的jmp指令——至少,循环结构必须用到一个goto,来跳转回循环体开始的地方。但是,结构化编程采用以后,goto的用武之地明显少了很多,基本上,唯一的用处是异常处理。而当结构化异常处理被引入编程语言以后,goto就可以退休了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值