C-语言项目架构和命名规范

2018-12-22  本文已影响11人  牧馬放飏

背景

C语言项目架构和命名规范

1.定义宏

将用得非常多的命令或语句,利用宏将其简化。

#ifndef TRUE
#define TRUE  1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
#define MIN(a,b)            ((a<b)?(a):(b))
#define MAX(a,b)            ((a>b)?(a):(b))
#define ABS(x)          ((x>)?(x):(-x))
typedef unsigned char  uint8;                                   /* 定义可移植的无符号8位整数关键字            */
typedef signed   char  int8;                                    /* 定义可移植的有符号8位整数关键字            */
typedef unsigned int   uint16;                                  /* 定义可移植的无符号16位整数关键字           */
typedef signed   int   int16;                                   /* 定义可移植的有符号16位整数关键字           */
typedef unsigned long  uint32;                                  /* 定义可移植的无符号32位整数关键字           */
typedef signed   long  int32;                                   /* 定义可移植的有符号32位整数关键字           */

2.尽量不用全局变量

全局很容易破坏软件的结构,增加代码的耦合度,将模糊业务代码、数据库代码、控制代码的界限,害得维护人员在阅读代码时,第一要务就是要追踪全局变量在哪里,由于设计得不好,基本项目的所有源代码文件都涉及修改了全局变量,这一追踪下来,不是一天半会能够摸索清楚你要了解的某个功能,尽管这个功能很小,你还是要看完这整个项目,太浪费时间了,不值得啊。

3.少用全局变量

有些项目由于硬件资源的限制,比如嵌入式开发,你不得不使用全局变量。在这种不可避免的情况下,我们只能尽量减少使用全局变量。

4.别忘记加上static

如果你使用到的全局变量仅仅是某个源文件(模块)使用到,别忘记给这个全局变量加上static。

5.别忘记加上const

如果你设计的接口(函数)有入参,而你不想修改这个入参,别忘记加上const。

6.明确哪些结构体、枚举、联合体、宏、常量需要全局使用,哪些需要全局使用

如果有的结构体、枚举、联合体、宏、常量仅仅是某个模块需要使用,就没必要放置在公共的头文件中

如果结构体、枚举、联合体是需要公用的,就要考虑是否需要仅仅在公用头文件中声明,在某个源文件中

实现,这样可以避免某些类型重复定义的错误。

7.让C代码带上面向对象的思想

不像C++这样即面向过程又面向对象的语言,更不像Java、C#这样完全面向对象的语言,C语言仅仅是面向过程的,但是我们可以为C语言设计的项目插上面向对象的翅膀。

上一篇下一篇

猜你喜欢

热点阅读