其他分享
首页 > 其他分享> > 代码大全 code complete 阅读笔记-5 第十六章 循环结构

代码大全 code complete 阅读笔记-5 第十六章 循环结构

作者:互联网

控制循环

这里会从以下几个角度深度讨论循环结构的使用规范

  1. 循环的种类
  2. 如何用好break
  3. 如何组织良好的循环结构

1.循环的种类

这里列出的是宽泛的概念:

当然在Java里循环大概只有四种:

关于while循环

while循环是一种非常灵活的循环,它既可以作为计数循环,又作为连续求值循环,更能作为无限循环。
while循环在每次循环时只进行一次终止检测,只不过根据终止检测在循环执行前和终止检测在循环执行后不同,while循环又分出两种,多出来的这一种在Java中就是do-while循环。


2. 如何正确的使用break

也有人认为break和goto一样,应该尽量避免使用,但是我觉得如果放在一个合适的if块(按照之前我们学来的标准的if块)中,依然可以很好地解释程序本身。
如在while循环中出现如下语句

if( !inputFile.EndOfFile() && moreDtaAvailable ){
break;
}

可以很清楚的了解到代码的意图:当文件读到结束时或者没有其他可用文件时,退出循环。
除此之外,就是好好使用注释来说明你的代码了。


3.如何组织良好的循环结构

下面的话很重要,事关如何组织良好的循环结构:

如果可能,我们应该首先吧循环看做一个黑盒子,我们本不应该过度地关心循环内部,要把循环内部当做一个子程序看待,这就要求我们必须尽可能地把控制卸载循环体外。并且把循环体执行的条件表述清楚。

外围程序只知道它的控制条件,却不知道它的内容。

总结上面两句话:一定要让控制语句和循环体分明,两者互不干扰,互不牵扯。并且,我们应该是可以通过阅读控制语句进而了解整个循环结构所做的事

下面这些技巧的目的归根结底都是为了减少错误发生的可能。
循环可能出现的问题可以归结为下面之一:

减小出错可能的思路有以下两点:

  1. 尽可能简化影响该循环的各种因素的数量。
  2. 把循环体当做子程序不去关注而只关心外围的控制条件。

下面我将会从循环在执行过程中的几个时机切入:

如果你没有考虑过各种其他的方案,不到万不得已,不要使用break和continue。因为我们无法确定它们是好还是坏。
如果你不能证明使用break或者continue的正当性,那就不要用它们

下面是上述的案例代码

//3.在循环开始处使用continue判断
while(){
	if(//条件不满足){
    continue;//直接越过本次循环
    }
    //循环体语句
    ...
}
//4.使用带标号的break
  	waiceng:
  	for (int i = 0; i <= 10; i++) {
    	System.out.println("外层循环i="+i);
		for (int j = 0; j <= 10; j++) {
				System.out.println("内层j="+j);
                if ( j == 5){
                    break waiceng;	//直接连跳两层也就是说将直接跳出最外层的循环
                }
            }
       	}
//运行结果
外层循环i=0
内层j=0
内层j=1
内层j=2
内层j=3
内层j=4
内层j=5

低效的程序员会随意地做一些实验,智导他们找到了一种看上去能工作的组合。如果某个循环没有按照想象的那样去工作,低效的程序员可能会把<改成<=.如果还不行,他们就会把循环下标加1或者减1。这样做可能最终能碰出正确的组合,也可能把原有的错误改成了另一个更微妙的错误,然后耽误更多的时间。即使这样随意开发能够产生一个正确的程序,这些程序员也不明白为什么这个程序是正确的。
你可以通过在头脑中模拟和手工运算获益多多。这种智力训练带来的好处是:在最初的编码阶段少犯错误,在调试阶段更游刃有余更快地找出错误,从而整体上更好滴理解应用程序。它意味着:你能够真正理解你的代码是如何工作的,而不是瞎猜。

md这不就是说我的吗,我就是这样干的。。。。XD


4.如何正确使用循环变量


5. 循环应该有多长


要点 key point

标签:第十六章,code,complete,代码,使用,break,while,循环,循环体
来源: https://blog.csdn.net/Star__Platinum/article/details/89381577