写好C语言的几个建议(一)

    C 语言的语法简单,也没有C++ 中,这样多的功能 和 概念。但是,用C 写一个好的程序却不是很简单的问题。

一般来说,如果,你只想用C 写个 2000行的小程序,那么或许,你不需要遵守什么规则,可以自由的发挥。

但是,如果写一个上万行的程序,如果太自由,你会发现,到最面很难控制。而原因就是因为C 太自由。
    这篇文章先阐述函数的书写规则。

    1. 函数的书写规则:

    1.1 函数的一个最重要的规则是,对任何的输入,这个函数是不会崩溃的。函数是C语言的细胞,函数写的正规,说明,

    C 语言已经学的很不错了。很多C写的程序,bug 比较多,还经常的崩溃,大多数时候,就是没有考虑一些边界条件。

    比如一个函数:往一个栈里面添加一个元素。那么这个函数,首先就要判断这个栈是不是满了。

    1.2 如果是异常情况,要打印出错误。一般来说,错误分成两种,一种是 warning 一种 是 error。一般,从逻辑上来说,

    如果一个错误发生程序一定要终止了,那么就用error ,如果只是出现了一些异常的情况,还能补救,或者不必中断,就用warning。
    比如上面的站已经满了,就一定要打印出这个信息。否则,出了错误,就会感觉莫名其妙。错误一定要包含函数名,行数,错误的原因。

    我一般不用assert断言,而是直接在函数的入口检查参数的有效性,然后,可以定义一个宏,关闭错误,保存错误到日志,

    在控制台显示错误。所以,你要写个大点程序,先要把错误处理的框架定义好。

    1.3 如果存在异常情况,就一定要返回返回值。很多人写的函数都是void 的,函数里面出错了,就直接return,结果函数外面就不知道

    到底发生了什么事情了。比如你写了一个解压缩的函数,你一定要返回一个值,说解压缩正确了。如果不正确,也要返回具体的原因,比如,

    是buffer 不够,还是压缩文件已经损坏了,这样,在外界调用的时候,就知道怎么处理了。

    1.4 一个函数一个功能。函数功能尽量的单一,不要太复杂。虽然,这个涉及到设计的问题,功能单一,让函数的逻辑变的简单。并且,

    功能越简单,复用的可能性越大。当然,不要用长度论函数。关键是单一。一个函数,100行,但是,只是一个不可分割的功能,肯定是允许的。

    1.5 函数不应该有记忆性。有记忆的函数,很难测试。所以,尤其是逻辑复杂的函数,不要用static 和 全局的变量。如果一定要用,

    那么,把最好分成两个函数,把逻辑处理放到一个函数里面,把全局变量处理放到另外一个函数里面。

    1.6 为每个函数书写测试。测试函数,还要有一个testALL 函数,测试所有的函数。如果函数测试正确,那么返回OK,如果错误返回Error。

    你可能会觉得,写测试很烦,但是,它是你节约调试时间的好方法。testAll 一般这样输出:

    fun1  OK

    fun2 OK

    fun3 Error

    然后,你具体看看fun3 出了什么事情。这样的测试,在你修改了一个函数后,可能会影响到其他函数的情况,就很快的能找出这样错误。

    也可以去找找第三方的测试框架。

   

原文地址:https://www.cnblogs.com/niniwzw/p/1634611.html