C代码风格及注释(个人规范)


因为代码写的不算多,一直没有一种遵循的代码风格,现在整理一篇,为以后的代码树立风格,保证代码可读性。

参考规范:
Google C++风格指南
华为 C语言编程规范
MISRA C Coding Standard
下文简称Google、HW、MISRA。

代码风格

编码

因为大部分使用的Windows系统,这个系统上默认编码方式都是ANSI编码,它对应一种具体的编码方式。ANSI是一种遗留编码,在不同的语言当中ANSI编码对应的编码是不同的。简体中文Windows系统中ANSI编码对应GBK编码,繁体中文(台湾)Windows系统中ANSI编码对应BIG5编码。
但在我们常用的IDE中,一般是不使用ANSI编码的,一般使用GB2312或UTF-8编码(对中文编码较友好)。一般的IDE都有设置,为了统一显示,新拿到IDE需要首先修改编码方式为UTF-8。

命名规范

既然写程序,就少不了给各种东西命名,文件名、函数名、变量名等等吧。总的来说一句话,命名要有描述性,且少用缩写。
unix like风格:单词用小写字母,字母间用下划线”_”强调内容隔开,如rx_data,tx_count;
驼峰法:首字母大写,代词顺序排布,如RxData,TxCount;
这两种风格我基本都会使用,没有谁好谁坏之说。
在写命名时可以使用一些约定俗成的缩写,如下:

单词 简写
argument arg
buffer buff
clock clk
command cmd
compare cmp
configuration cfg
error err
initialize init
message msg
register reg
synchronize sync
temp tmp

等等吧。
在创建变量时需要再变量名前加前缀,如下

unsigned char       ucCount;
char                cCount;
unsigned short      usCount;
short               sCount;
unsigned long       ulCount;
long                lCount;
//指针变量前加 p
char *  pcCount;
//全局变量前加 g
//静态变量前加 s

这样可以一眼看出此变量大小范围。

结构体/枚举类型

只给出一个创建格式:

/** 结构体 */
typedef struct  _STUDENT
{
unsigned short StudentName;
unsigned char StudentAge  ;
......

}STUDENT,*P_STUDENT;/* STUDENT 为新类型名称,P_ STUDENT 为新类型指针名*/
/** 枚举 */
typedef enum _RETURN_
{
    error = 0x01,           
    OK
}_RETURN;

注释

以前我一般注释写的不多,前几天拿到一个代码需要消化,这都是啥和啥,代码结构很好,基本也都能看懂,但刚开始看没有注释很是有点恼火,想到我的代码拿给别人看估计也很恼火,所以就重点看下代码的注释结构吧。
注释结构,我是参考了Doxygen风格,截取出来一部分组成代码注释如下。

/*!***************************************************
 * @file: test.c
 * @brief: 测试代码
 * @author: youke 
 * @date: 1,18,2018 
 * @note: 
 ****************************************************/
 #include "test.h"

 int g_xxx = 0; ///< 全局变量
 static int s_xxx = 0; ///< 静态变量

/*!***************************************************
 * 计算和
 * @param:   None 
 * @return:  None 
 * @note: 
 * @date: 1,18,2018  
 * @author: youke 
 ****************************************************/
 int sum(int a,int b)
 {
     return a + b;
 }
/*!***************************************************
 * @file: test.h
 * @brief: 测试代码头
 * @author: youke 
 * @date: 1,18,2018 
 * @note: 
 ****************************************************/
#ifndef _TEST_H
#define _TEST_H

#define XXX_XXX 0

/** 枚举类型 */
typedef enum _COLOR_{
    RED=0,      ///<  红色 
    GREEN=1,    ///<  绿色 
    YELLOW=2    ///<  黄色 
} _COLOR;

/** 坐标系结构 */
typedef struct _DEMO_{  
    int x;  ///< 横坐标
    int y;  ///< 纵坐标
}_DEMO,*P_DEMO; 

int sum(int a,int b); 
#endif

这样的注释结构可以用Doxygen软件生成注释文档,很方便。具体操作下篇博文给出。

你可能感兴趣的:(C/C++)