C语言 coding style

头文件

The #define Guard

#define的保护文件的唯一性,防止被多重包含
格式 : <PROJECT>_< FILE>H
PROJECT : XS
FILE : MV_CTR

头文件的包含顺序

  1. C System Files
  2. Other Libraries
  3. User Library
  4. Conditional include

作用域

局部变量

-变量定义时需要初始化。

静态和全局变量

-相关的变量建议使用"结构体"存储静态和全局变量

-"static" -> For internal reference

-"extern" -> For external reference

杂项

使用<cstdint>中的变量类型

0 and NULL

整数使用0, 实数使用0.0 , 指针使用NULL

命名规则

几种命名规则

蛇形命名法(推荐)

local_pose, file_name

MAX_NUMBER

Pascal Case

LocalPose, FileName

驼峰命名法

localPose, fileName

避免使用无意义的缩写

FirstName -> O

firstName -> O

fName -> X

f_name -> X

规则细则

文件名
  • Ex : http_proxy.c,
  • Ex: hello_word.h
函数名
  • Ex : delete_url(), open_file()
Typedef命名

带后缀 "****_t"

  • Ex : typedef int32_t* my_pointer_t;
局部变量名
  • Ex : char *p_my_string = "string";
指针

**带前缀 "**p_"

  • Ex: int32_t *p_my_pointer = NULL;
结构体命名

结构体名称

  • 带前缀 "st_"
  • Typedef 带后缀"_t"

结构体成员

蛇形命名规则

变量 & 函数
  • static variable(此变数只用在此檔案)
  • static function(此函数只用在此档案)
  • **函数名加前缀 "**m_"
  • extern variable(此变量会用在其他档案)
  • **Start with prefix "**g_"
宏定义命名

全大写并遵循蛇形命名规则

枚举命名

Enumerator type name

带前缀"e_"

枚举成员名

带前缀"k_"

注释

注释类型

  • //
  • /* */
  • 文件函数使用Doxygen 类型的注释.

格式

每行长度

单行code最多80个字

空格键vs. Tab键

每一行都是用Tab来缩排(length:2个字), 当单行长度超出每行长度时, 被强迫换行的部分才会以空格对齐

函数声明与定义

  • 函数名与左括号同一行
  • 函数名与左括号没空格
  • 括号与参数之间没空格
  • 函数定义太长(超过80个字)就换行, 换行要做缩排并对齐左括号后第一个字

条件表达式(if/else/...)

  • If, else与左括号间有空格
  • If与else不同行
  • 左大括号后必定换行

循环与Switch表达式

  • 同上规则,表达式与左括号同一行
  • 表达式与左括号有空格
  • 左大括号后必定换行

预处理指令

使用#时放在每一行code的最前面, 不做缩排

操作符

  • 操作符前后要加space
  • 一元运算符与其参数就不加(ex:-5)

类型转换

变量做类型转换时, 包住type的括号与变量名中间不加空格

换行

基本上都只空一行

相关推荐
柯南二号3 小时前
MacOS 系统计算机专业好用工具安装
开发语言·lua
神洛华3 小时前
Lua语言程序设计2:函数、输入输出、控制结构
开发语言·lua
java1234_小锋4 小时前
一周学会Matplotlib3 Python 数据可视化-绘制热力图(Heatmap)
开发语言·python·信息可视化·matplotlib·matplotlib3
梁辰兴4 小时前
数据结构:串、数组与广义表
开发语言·数据结构·c··数组·广义表
三体世界5 小时前
Mysql基本使用语句(一)
linux·开发语言·数据库·c++·sql·mysql·主键
etcix5 小时前
wrap cpp variant as dll for c to use
java·c语言·开发语言
Websites6 小时前
Hyperf 百度翻译接口实现方案
开发语言·自然语言处理·php·自动翻译
papership7 小时前
【入门级-C++程序设计:11、指针与引用-引 用】
c语言·开发语言·c++·青少年编程
常乐か8 小时前
VS2022+QT5.15.2+OCCT7.9.1的开发环境搭建流程
开发语言·qt·opencascade
Evand J9 小时前
【MATLAB例程】滑动窗口均值滤波、中值滤波、最小值/最大值滤波对比。附代码下载链接
开发语言·matlab·均值算法