C语言项目开发-项目架构和编程命名规范
来源:互联网 发布:伊登软件股份有限公司 编辑:程序博客网 时间:2024/06/14 14:37
宏定义
宏定义主要用于两个地方:
- 一是用得非常多的命令或语句,利用宏将其简化。
#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位整数关键字 */
关于注释
为了增加程序的可读性,方便合作者读动程序,或者程序作者在一段时间之后还能看懂程序,我们需要在程序中写 注释。
- 在比较特殊的函数使用或者命令调用的地方加单行注释。使用方法为:
Tbuf_putchar(c,RTbuf); // 将数据加入到发送缓冲区并开中断extern void Delay1s(uint16 n); // n <= 6 ,when n==7, it is 1.
- 在模块化的函数中使用详细段落注释:
/************************* 函数名称: Com_putchar** 功能描述: 从串行口输出一个字符c** 输 入: c:输出字符** 输出 : 0:失败 1:成功** 全局变量: 无** 调用模块: ** 说明:** 注意:********************/
- 在文件头上加文件名,文件用途,作者,日期等信息。
/*********************************************************************************************************** serial driver ** (c) Copyright 2005-2006, limaokui** All Rights Reserved**** V1.1.0******--------------文件信息--------------------------------------------------------------------------------**文 件 名:sio.c**创 建 人: 李茂奎**最后修改日期: 2005年7月13日**描 述: serial driver ****--------------历史版本信息----------------------------------------------------------------------------** 创建人: 李茂奎** 版 本: V1.00** 日 期: 2005年7月13日** 描 述: 原始版本** *********************************************************************************************************/
要清楚,注释是为了方便阅读,增强程序的可度性,不要本末倒置,不要给很简单大家都能看明白的程序加注释,不要让注释淹没了你的程序结构。对于函数,变量等尽量使用文件名自注释的方法,及通过文件名就可以知道意思。
1、尽量不用全局变量
全局很容易破坏软件的结构,增加代码的耦合度,将模糊业务代码、数据库代码、控制代码的界限,
害得维护人员在阅读代码时,第一要务就是要追踪全局变量在哪里,由于设计得不好,基本项目的
所有源代码文件都涉及修改了全局变量,这一追踪下来,不是一天半会能够摸索清楚你要了解的某个
功能,尽管这个功能很小,你还是要看完这整个项目,太浪费时间了,不值得啊。
2、少用全局变量
有些项目由于硬件资源的限制,比如嵌入式开发,你不得不使用全局变量。在这种不可避免的情况下,
我们只能尽量减少使用全局变量。
3、别忘记加上static
如果你使用到的全局变量仅仅是某个源文件(模块)使用到,别忘记给这个全局变量加上static。
4、别忘记加上const
如果你设计的接口(函数)有入参,而你不想修改这个入参,别忘记加上const。
5、明确哪些结构体、枚举、联合体、宏、常量需要全局使用,哪些需要全局使用
如果有的结构体、枚举、联合体、宏、常量仅仅是某个模块需要使用,就没必要放置在公共的头文件中
如果结构体、枚举、联合体是需要公用的,就要考虑是否需要仅仅在公用头文件中声明,在某个源文件中
实现,这样可以避免某些类型重复定义的错误。
6、让C代码带上面向对象的思想
不像C++这样即面向过程又面向对象的语言,更不像Java、C#这样完全面向对象的语言,C语言仅仅是面向
过程的,但是我们可以为C语言设计的项目插上面向对象的翅膀。
命名规范
1、全局变量加前缀g_,如定义一个全局变量int g_iVal;
2、static变量加前缀s_,如定义一个模块全局变量static int s_iVal;
3、结构体变量加前缀st_,如COMM_PARA是一个已经定义好的结构体,则COMM_PARA stCommPara;
4、枚举变量加前缀e,如ENUM_SEX是一个已经定义好的枚举,则ENUM_SEX eSex;
5、int类型变量加前缀i,如int iRet;
6、unsinged int类型加前缀ui,如unsigned int uiRetCode;
7、float类型变量加前缀f,如float fVal;
其实有了double类型,可以不用float,就尽量使用double。
8、unsinged float类型变量加前缀uf,如unsinged float ufVal;
9、double类型变量加前缀d,如double dVal;
10、unsinged double类型变量加前缀ud,如unsinged double udVal;
11、short int类型变量加前缀si,如short siVal;
12、unsinged short类型变量加前缀usi,如unsinged short usiVal;
13、如果定义一个bool类型的变量加前缀b,如int bFlag;char bFlag;
14、如果定义的是一个字符串类型char[],
如果字符串是需要以0结束符的字符串,则char szCountry[11+1];
这种情况下的字符数组的大小写法是字符个数+1的
如果字符串不需要以0结束符的,则char sCountry[11];
15、如果定义的是一个字符串类型char *,
如果字符串是需要以0结束符的字符串,则char pszCountry[11+1];
这种情况下的字符数组的大小写法是字符个数+1的
如果字符串不需要以0结束符的,则char psCountry[11];
16、如果是一个指针类型,
如果指针变量是通过malloc动态获取内存的,则int * piValPtx;
Ptx代表这个变量是需要动态释放内存
如果指针变来那个不是动态获取内存的,则int piValPtr;
如果带上了Ptr或者Ptx的后缀,则前缀的p可省略
17、项目的命名
在公司内唯一
18、文件的命名
如果某些文件是项目唯一使用的,文件名称加上“项目名称简写”+ “_“作为前缀
19、接口函数命名
如果写的是库,则库接口则应该是库名称加上“项目名称简写”+ “_“作为前缀
20、防止头文件重复使用宏命名
项目名称简写”+ “_“ + “文件名" + “_“ + “H"
- C语言项目开发-项目架构和编程命名规范
- C语言项目开发-项目架构和编程命名规范
- C语言项目开发-项目架构和编程命名规范
- java项目开发命名规范
- java项目开发命名规范
- java项目开发命名规范
- 开发规范:文件 / 项目命名规范
- 安卓项目包命名规范及常见项目架构
- Android项目包名命名规范及常见项目架构
- C语言编程规范4: 命名规则
- SSH框架项目开发命名规范
- Android项目开发之命名规范
- JAVA项目命名规范和数据库设计规范
- Android开发命名规范【根据项目经验和java规范整理】
- 编程语言命名规范
- JXTA项目命名规范
- android项目命名规范
- 项目命名规范
- leetcode 258 Add Digits
- 广义表的读取和输出,树的拷贝及比较的实现
- Spark中组件Mllib的学习15之创建分布式矩阵
- currentTimeMillis方法
- python中的*与**
- C语言项目开发-项目架构和编程命名规范
- CVonline: Image Databases 计算机视觉图像数据集
- 第十二周阅读程序2
- [SDIBT-OJ]27页
- MySQL索引
- Top K Frequent Elements
- 一定要啃掉
- 一个bolt接收spout和另一个bolt的tuple
- jQuery导出Excel格式