2012-05-05
Chapter16
1、预先不知道循环要迭代多少次——建议使用while循环
需要一个执行次数固定的循环——建议使用for循环
2、对于for,在循环结束后不要滥用下表的最终取值
例如,for(i=0;i<length;i++)
{……}
process(i); //此处滥用了i
正解:在循环体内某个适当地方将最终取值赋给某个变量带出
3、对于while,i++之类的表达式目的不是完成循环工作,而是控制循环;此类语句放在循环开始或末尾
4、一个循环只做一件事
5、在循环(尤其是多维数组)时,用有意义的名字来避免I,j,k等命名
6、把循环下标变量的作用域限制在循环内
对于for(int i=0;i<10;i++)
…….
for(int i=0;i<50;i++)
……
不同的编译器会有不同的结果,如
1,可能允许第二个循环中的i
2,可能不允许第二次声明i,提示声明了2次
7、循环尽可能短,以便一目了然:50行以内(一页纸以内),最好15-20行以内
嵌套限制在3层以内
Chapter17
1、早返回或早退出,来简化复杂的错误处理(先处理不正常的情况,即直接return的情况)
2、goto语句优缺点
缺点:1,含有goto的代码很难安排好格式,让缩进体现逻辑结构变困难
2,破坏编译器的优化特性
3,违背代码自上而下运行的原则,逻辑纠错变困难,可能会产生某些执行不到 的代码
优点:1,减少重复的代码(如果位置恰当)
2,某些情况下,使用goto会让代码运行速度更快
总结:少数情况下,goto是编写可读性和可维护代码的最佳办法,但这种情况非常罕见。除非万不得已,不要用goto
3、递归可以很优雅的解决一部分问题,使用也要倍加小心;避免用递归写斐波那契或阶乘(太慢);使用递归时考虑栈溢出的情况