《代码大全》学习笔记——第十六章,控制循环

第十六章,控制循环

前言

16.1 选择循环的种类

什么时候使用 while 循环:

什么时候使用带退出的循环:

如果把循环条件放在开始或结束处,那就要写一个半循环。还要注意把所有的退出条件放在一起,避免将它写的到处都是。带退出的循环更容易理解。

什么时候使用 for 循环:

不需要在内部控制循环,循环条件是简单的递增或递减。如果更为复杂,则要使用 while 循环。

 

16.2 循环控制

防止循环错误的方法: 1 )减少能够影响该循环的各种因素的数量。 2 )把循环体内部看做一个子程序,把循环控制放在循环体外部。

进入循环:

1、  只从同一个位置进入循环。

2、  把初始化代码紧放在循环前面。就近原则主张把相关的语句放在一起。如果分开放置,在后期的维护过程中,对程序的更改容易产生错误。

3、  while true )表示无限循环。

4、  在适当的情况下多使用 for 循环。 For 循环将循环控制代码集中在一处。从而有助于形成可读性强的代码。

5、  while 循环更适用的时候,使用 while 循环。不要把和循环无关的代码放在循环头部。

 

处理好循环体:

1、  {} 将循环体括起来。

2、  避免空循环。有时候如果把循环检测和循环执行放在循环头中,会出现这种情况。

3、  把循环内务操作(?循环的内务操作是指向 i++ j++ 之类的循环控制操作)要么放在循环的开始,要么放在循环的结尾。

4、  一个循环只做一件事情。

 

退出循环:

1、  设法确认循环可以终止。

2、  循环终止条件看起来很明显。

3、  不要为了推出循环而胡乱的更改下标。为了获得对循环更多的控制权,可以使用 while 循环来实现。

4、  避免出现依赖于循环下标最终取值的代码。更好的具有自描述的做法是,定义一个变量,将循环下标赋值给它。

5、 使用安全计数器:用于在如果循环过多会产生灾难性后果的情况下使用。

 

提前退出循环:

1、  考虑在 while 循环中使用 break 语句而不是使用布尔标记。

2、  对循环中存在过多 break 语句的情况提高警惕。

3、  在循环开始处使用 continue ,可以代替 if 判断,提高可读性。

4、  continue break 的使用保持警惕。它会增加复杂度。

 

检查端点:

使用循环变量:

1、  用整数或者枚举类型表示数组和循环边界。

2、  在嵌套循环中使用有意义的变量名来提高其可读性。如果是你使用的二维或者多维的数组,也使用含有意义的变量来表示其数组名称。避免使用 i j k 等无意义的名称。

3、  用有意义的名字来避免循环下标串话。

4、  把循环变量的作用域限制于循环内部。

 

循环应该有多长:

1、  循环要尽可能的短,以便能够一目了然。尝试“编写简单代码的原则”,那么会很少写出超过 20 行的循环。一般的,一个函数在 7 行左右。

2、  把嵌套控制 3 层内。提取子程序来优化。

3、  把循环体内部的长的语句提取层一个子程序。

4、  要让长循环格外清晰。

 

我发现,这本书中的很多原则都基于一个中心,就是“帮助人的大脑来降低复杂度,代码对人的友好性远大于代码对机器的友好性”。

 

16.3 轻松创建循环——由内而外

先写一个一般的过程,再把这个过程用循环代替。

 

 

CHECKLIST: Loops

核对表:循环

循环选择:

1、  在合适的情况下用 while 循环代替 for 循环了吗?

2、  循环式由内到外创建的吗?

进入循环:

1、  是从循环头进入循环的吗?

2、  初始化代码直接位于循环前面吗?

3、  循环式无限循环或事件循环码?它的结构是否清晰?

4、  避免使用像 for i=1 to 999 这样的代码吗?

5、  如果这是一个 c java c++ 循环,是否把循环头留给控制代码了?

循环内部:

1、  把内务处理集中的放在循环开始或循环结束处了吗?

2、  循环像定义良好的子程序那样只执行了一件操作吗?

3、  循环短的足以一目了然吗?

4、  循环嵌套层次不超过三层吗?

5、  把长循环的内如提取为单独的子程序了吗?

6、  如果循环很长,那么它非常清晰吗?

循环下标:

1、  如果是 for 循环,那么循环中的代码有没有随意的修改下标的值?

2、  是否把重要的循环下标的值保存在另外的变量里,而不是在循环外使用该循环下标的值?

3、  循环下标的名字有意义吗?

4、  循环避免了下标串话的问题吗?

退出循环:

1、  循环在所有可能的条件下都能够终止吗?

2、  如果你建立了某种安全计数器标准,循环使用安全计数器了吗?

3、  循环退出的条件清晰吗?

4、  如果使用 break continue ,他们用对了吗?

 

本章要点

1、  循环很复杂,保持循环简单将有助于别人阅读你的代码。

2、  保持循环简单的技巧:避免使用诡异的循环,减少嵌套层次,让入口和出口一目了然,把内务操作代码放在一起。

3、  循环下标很容易滥用,因此命名要准确,并且把他们各自仅用于一个用途。

4、  仔细考虑循环,确认他在每一种情况下都可以运行正常,并且在没一种情况下都可以退出循环。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值