【分享】如何写出好的C代码

如何写出好的C语言代码??html

让小编为你细细道来!
算法

总的来讲,评价代码好坏的标准万变不离其宗,主要包括以下几个方面:编程

稳定性:在不一样的负载和应用场景下,都能获得正确的输出,性能也没比较大的抖动安全

健壮性:考虑到各类corner cases性能优化

鲁棒性:错误的输入、配置、异常或故障不会扩散到其余(更多)的模块数据结构

可扩展性:上下层模块之间有固定的接口,横向模块之间低耦合架构

易维护程度:可读性强,准确且足够的注释,便于调试,容易测试和调试框架

固然,系统的学习是一切考虑的前提:http://edu.51cto.com/course/courseList/id-12.html函数

总的来讲两个方面进行考虑:工具

1、明确需求和接口,选好算法和数据结构

开始编程以前,可用需求定义、层次划分、模块设计、接口定义先行,不须要快速实现C代码,能够先分层、划分好子模块,肯定好具体的算法和架构后,先大体定义 出头文件,而且在头文件中用注释的方式快速描述、确认头文件中各个接口函数的输入、输出参数,以及前提假设、临界条件。


2.利用已有的编码经验教训,使用静态和动态工具检查

下面列出了许多经常使用的C 编码规范,可供参考和检查:

  • 头文件中 #ifndef XXX; #define XXX;#endif 用来防止重复应用;


  • 考虑进对 C++的支持;extern "C"


  • 使用严格定义的数据类型:用uint8_t; uint32_t, uint64_tsize_t等代替char/int/short/long


  • indent 统一格式;


  • 编译时打开全部警告: -Wall


  • splint作安全和稳定性检查;


  • 封装容易出现问题的alloc();free();ralloc();realloc()


  • 甄别错误和异常状况,在调试版代码中使用 assert(), assert_perror(),而且保证在正式release中去掉。


  • 调试版本总考虑用不一样的代码/算法确保核心代码;


  • 测试代码和功能代码并行进行,而且尽快搭建针对所开发模块的自动测试框架;

  • 利用GDB进行代码走读


    走读过程当中碰到的&& /||/ ? :操做符号,可先打印出当前的状态,而后能够经过gdb来确认或者修改 将走到的路径


  • 避免getchar(), mallocate()这类返回值既可能表示运行正确与否,又能表示具体数值或地址相关的函数定义或实现,若是基础库的代码中有它,尽可能避免它;若是设计的库函数中有它,尽可能经过返回flag的方式来讲明它。


  • 尽可能避免用地址比较做为判断退出循环的条件,由于地址不肯定,存在上溢或者下溢的可能;


  • 精确地实现而非近似地实现功能或者函数


  • 注意下溢或者上溢:


        下溢: short ii = -i; (当i=-32768时, short - i)仍是-32768)


  • 不要经过移位来替代除法以赚取一点微小的性能优化,由于这样会牺牲代码的清晰度


   总的来讲,在学习的过程当中就要养成好习惯,跟着名师学习每每能事半功倍:http://edu.51cto.com/course/courseList/id-12.html

相关文章
相关标签/搜索