IE盒子

搜索
查看: 123|回复: 1

C语言编码规范

[复制链接]

4

主题

9

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2023-1-13 11:37:04 | 显示全部楼层 |阅读模式
写代码就像写文章,需要准确地使用标点符号,合理地划分段落。
编写代码时,遵守统一的编码规范,让排版美观,可增强代码易读,降低出错的可能性。
标识符命名规范

综合各类语言,目前常见的命名方法包括:
驼峰命名(Camel case):标识符由多个单词组成,第一个单词全小写,后面的所有单词首字母大写
PASCAL命名(Pascal case):标识符由多个单词组成,所有单词的首字母大写
小蛇命名(Snake case):标识符由多个单词组成,所有单词均小写,以下划线拆分单词
大蛇命名(Snake case):标识符由多个单词组成,所有单词均大写,以下划线拆分单词
烤串命名(kebab case):标识符由多个单词组成,所有单词小写,以中划线拆分单词(常用于url中)
匈牙利命名:标识符中包含作用域和类型信息。
例如:
#define USER_NAME_MAX_LENGTH        20      /* 大蛇命名 */
char userName[USER_NAME_MAX_LENGTH];        /* userName遵守驼峰命名 */
char UserName[USER_NAME_MAX_LENGTH];        /* UserName遵守PASCAL命名 */
char user_name[USER_NAME_MAX_LENGTH];       /* user_name遵守小蛇命名 */
char g_cUserName[USER_NAME_MAX_LENGTH];     /* 匈牙利命名,g代表全局变量,c代表char类型 */C语言,标识符命名采用小蛇命名和大蛇命名,变量名、函数名等按照小蛇命名;枚举常量、宏定义等按照大蛇命名。
缩进规范


  • 缩进使用4个空格(不建议用制表符Tab),建议在编辑器中,设置显示空格和制表符
VSCode的设置:



vscode显示空格设置

SourceInSight的设置:



SourceInSight显示空格设置

Notepad++的设置



Notepad++显示空格设置

Visual Studio 2015的设置



VisualStudio2015显示空格设置

空格规范


  • 双目运算符、三目运算符,运算符两端各加一个空格
/* 双目运算符 */
= + - < > * / % | & ^ <= >= == !=

/* 三目运算符 */
  ? :例如:
c = a + b; /* good */
c=a+b; /* bad */

  • 单目运算符,与操作数之间不要加空格
/* 单目运算符 */
& * + - ~ ! sizeof ++ --

/* 结构体成员运算符 */
  .和->例如:
i++; /* good */
i ++; /* bad */

  • if, switch, case, for do, while等关键字后面需要加空格
if (condition) {}

  • sizeof, typeof, alignof, attribute等关键字后面不要加空格
  • 小括号内的表达式前后不要加空格
s = sizeof(struct file);

  • 定义指针变量时,星号贴近名字,而不应该贴近类型
char *str;大括号规范


  • 左大括号放在行尾,右大括号放在行首
  • 函数是一个特例,左大括号独占一行
switch (action) {           /* 左大括号放在行尾 */
case KOBJ_ADD:
        return "add";
case KOBJ_REMOVE:
        return "remove";
case KOBJ_CHANGE:
        return "change";
default:
        return NULL;
}                           /* 右大括号放在行首 */

int function(int x)
{                           /* 函数是一个特例,左大括号独占一行 */
        body of function
}

  • 为方便代码维护,即使条件语句中只有一条语句,也建议使用大括号
if (condition) {
        do_this();
        do_that();
} else {
        otherwise();    /* 只有1条语句,建议使用大括号 */
}断行规范

为方便代码编写和阅读,每行代码长度不要超过80列,代码中的字符串除外(为了方便字符串的阅读和查找,同一个字符串,长度超过80列时不建议分成多行)。
注释规范

为代码写注释是个好习惯,但不要过度。注释中不要试图解析您的代码如何(HOW)工作,最好的方式是代码本身就清晰地说明了它是如何工作的。
通常情况下,注释用来说明你的代码在做什么(WHAT),以及为什么这么做(WHY),记录避免描述怎么做(HOW)。

  • 给文件加上文件头注释
/******************************************************************************
*  Copyright 2022
*
*  @file    eraser_lib.cpp
*
*  @brief   
*
*=============================================================================
*  Revision History
*  Version     Date        Author      Content
*  -------     ----------  ---------   ---------------------------------------
*  V1.00       2022/03/12  yangyf      Create.
*
*****************************************************************************/

  • 给函数加上函数头注释
/******************************************************************************
*  @fn      uint16_t calc_crc16(uint8_t const *data, int32_t data_len)
*
*  @brief   计算16位的crc校验码
*
*  @param   p_data    待校验数据的首地址
*  @param   data_len  数据长度
*
*  @return  CRC value, 0x0000 ~ 0xFFFF
*/
uint16_t calc_crc16(uint8_t const *data, int32_t data_len)
{
    // ......
}
~ END ~
回复

使用道具 举报

1

主题

7

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2025-6-3 05:43:36 | 显示全部楼层
广告位,,坐下看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表