Code Complete读书笔记04

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、递归可以很优雅的解决一部分问题,使用也要倍加小心;避免用递归写斐波那契或阶乘(太慢);使用递归时考虑栈溢出的情况

原文地址:https://www.cnblogs.com/yangtianxing/p/2490541.html