第七、八章

来源:互联网 发布:小猪生活通9源码 编辑:程序博客网 时间:2024/05/18 02:35

 

第七章 可移植性缺陷

         对于第七章,我虽然看了,但是真的不知道该怎么叙述啊,总部可能把书上的内容照着

 

打一遍啊,唉~而且可移植性对我们来说虽然是一件很普通的事情,但是对于现在的我来说

 

还没有考虑这么深入的问题,因此我决定不写了。对于这一章,还是看书好一些。例如书中

 

所提到的Mark HortonHow to Write Portable Software in C

第八章  建议

1.不要说服自己相信“皇帝的新装”。

 

有的错误极具欺骗性和伪装性

 

2.直截了当地表明意图。

 

当你想表达的意思可能出现歧义时,请使用括号或其他方法让你的

 

意图清晰明了。

 

3.考察最简单的特例。

 

这几乎适用于任何情况,你可以从最简单的例子中得到启发

 

4.使用不对称边界。

 

这是3.6的内容,值得再读一读

 

5.注意潜在暗处的Bug

 

坚持使用C语言中众所周知的部分,避免“生僻”的语言特性。尤其是在移植程序时。

 

记住,程序的生命周期往往长于他所运行其上的机器的生命

 

6.防御性编程。

 

对于程序用户和编译器实现的假设不要过多

 

这是第八章。

 

下面是我在网上看到的一些关于C语言的一些建议:

 

.程序版式

 

    空行:根据代码间的相关程度确定是否加入空行

 

    代码行:代码行只作一件事

 

    代码行内的空格:易于区分独立的变量或常量

 

    对齐:易于代码的层次

 

    长行拆分:易于理解本行代码含义

 

    注释:必要之处

 

    命名规则:匈牙利命名法则等,一个程序内最好保持命名法则的统一

 

.循环语句的效率

 

    在多重循环中,应将循环次数最长的放到里曾

 

    尽量将判断移到循环之外

 

.指针只能和NULL比较,不能和0比较

 

.浮点数没有0,不能和0比较,也不能直接比较大小

 

.switch语句

 

   case后面加break

 

   defult记得加在最后

 

.const常量有数据类型,最好别用define宏定义

 

.函数设计

 

     函数接口的要素事参数和返回值.c语言中,函数的参数和返回值的传递有两种:值传递和指针

 

   参数的规则

 

     参数的书写要完整,命名合适,要做到见名知其意(类型和含义)

 

     如果参数是指针,仅做输入用,应在类型前加const,防止指针在函数体内被以外修改

 

     避免函数有过多的参数,数量控制在5个以内

 

     尽量不要使用类型和数量不确定的参数,即在函数入口检验参数的合法性(重要)

 

   返回值的规则

 

     不要省略返回值的类型

 

     函数名字和返回值类型在语句上不可冲突

 

     区分正常返回和错误返回

 

    return不可返回指向栈内存的指针,因为此时栈已释放

 

     要弄清返回的是值还是变量

 

   函数功能要单一,规模要小,最好50行以内

 

   尽量避免函数内有静态变量

 

   不仅要检查输入变量的合法性,还要检查全局变量,文件指针等通过其他途径进入函数体的变量

 

   对出错返回代码含义要清楚

 

.malloc()申请内存后要记得free()释放

 

 

PS:第六条所说的在C语言中不行,只有在C++const才能定义常量,我个人认为,在C

 

言中需要定义数字常量时,也许可以用枚举来代替(枚举的反括号后面的分号别忘了)。

 

原创粉丝点击