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;
这两种风格我基本都会使用,没有谁好谁坏之说。
在写命名时可以使用一些约定俗成的缩写,如下:

单词简写
argumentarg
bufferbuff
clockclk
commandcmd
comparecmp
configurationcfg
errorerr
initializeinit
messagemsg
registerreg
synchronizesync
temptmp

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

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软件生成注释文档,很方便。具体操作下篇博文给出。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值