背景
C语言项目架构和命名规范
- 1.定义宏
- 2.尽量不用全局变量
- 3.少用全局变量
- 4.别忘记加上static
- 5.别忘记加上const
- 6.明确哪些结构体、枚举、联合体、宏、常量
- 7.让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语言设计的项目插上面向对象的翅膀。
网友评论