代码大全学习笔记——第十七章不常见的控制结构

17.1 子程序中的多处返回

  1. 如果能增强可读性,那么就使用return
  2. 用防卫子句(早返回或早退出)来简化复杂的错误处理:从审美的角度来说,把子程序的主体缩在4条if语句里面很难看,在这种情况下,如果先检查错误情况,用这些代码来为正常的执行路径清路,那么代码的布局有事可能变得更清楚,如果错误需要进行处理,那么可以为不同的错误,添加不同的返回值,从而进行不同的错误处理在这里插入图片描述
  3. 减少每个子程序中return的数量:使用return语句是为了增加可读性,如果没有增加可读性或降低了可读性,那么就要慎重使用return了

17.2 递归

使用递归的技巧

  1. 确认递归能够停止
  2. 使用安全计数器防止出现无穷递归
  3. 把递归限制在一个子程序内
  4. 留心栈空间
  5. 不要用递归去计算阶乘或斐波那契数列:用循环去计算阶乘更好,因为不用考虑递归的缺点,比如栈空间等

17.3 goto

  1. 在那些不直接支持结构化控制语句的语言里,用goto去模拟那些控制结构,在做这些的饿时候,应该准确地模拟,不要滥用goto所带来的灵活性
  2. 如果语言内置了等价的控制结构,那么就不要用goto
  3. 如果是为了提高代码效率而使用goto,请衡量此举实际带来的性能提升,在大多数情况下,你都可以不用goto而重新编写代码,这样既可以改善可读性,同时也不会损失效率
  4. 除非你要模拟结构化语句,否则尽量在每个子程序内只使用一个goto标号
  5. 除非你要模拟结构化语句,否则尽量让goto向前跳转而不要向后跳转
  6. 确认所有的goto标号都被用到了,没有用到的goto标号表明缺少了代码,即缺少了跳向改标号的代码。如果某些标号没有用,那么就删除它们
  7. 确认goto不会产生某些执行不到的代码
  8. 如果你是一位经理,那么就应该持这样的观点:对某一个goto用法所展开的争论并不是事关全局的。如果程序员知道存在替代方案,并且也愿意为使用goto辩解,那么用goto也无妨

17.4 针对不常见控制结构的观点

那些类似的注重灵活方便而忽视结构和复杂度管理能力的程序,最终都将会被淘汰

要点

  1. 多个return可以增强子程序的可读性和可维护性,同时可以避免产生很深的嵌套逻辑,但是使用它的时候要多加小心
  2. 递归你能够很优雅地解决一小部分问题,对它的使用也要倍加小心
  3. 在少数情况下,goto是编写可读性和可维护代码的最佳方法,但这种情况非常罕见,除非万不得已,不要用goto
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值