Skip to content

代码规范

onexming edited this page Apr 12, 2022 · 4 revisions

代码格式化(VScode)

  • Ctrl + ,, 打开设置
  • 输入 clang-format
  • 确保配置如下(VScode默认配置,一般不需要更改) _home_onx_Nextcloud_Obsidian_BOOK_arc_Pasted image 20220207093719
  • 代码保存之前使用ctrl + Shift + I(有些时候可能无法使用) 或者 右键选择Format Document

变量命名约定

变量命名表述清晰,尽量少用缩写,让人一眼就能看明白所表述的信息, 而不是去看注释代码,注释禁止使用拼音

普通变量名

  • 全小写, 禁止使用大小写混合
  • 变量名之间使用下划线"_"进行分割,例如: price_count_reader, num_errors, num_dns_connections
  • 全局变量使用g_开头(global), 例如: g_price
  • 静态变量, 使用s_, 例如: s_count

常量

使用c_开头(const), 首字母大写 例如: c_Days_In_A_Week

类数据成员

  • 不管是静态的还是非静态的, 类数据成员都可以和普通变量一样, 但要接下划线。
  • 非静态成员在使用时一律加上this->指针。
class TableInfo {
  ...
 private:
  string table_name_;  // 好 - 后加下划线.
  static Pool<TableInfo>* s_pool_;  // 好.
  void print(){
	  std::cout << this->table_name_ << std::endl; // 使用时加 this->
	}
};

函数

  • 首字母小写, 使用驼峰变量名, myDog, setName, count, setCount
  • 命名禁止使用下划线_

类,结构体,枚举, 命名空间(里面的变量命名规则统一遵循类)

  • 首字母大写,大小写混用(驼峰变量名),Student, MyDog, CurrentMode
  • 类内部结构体/类,命名规则同普通类/接口体相同

自定义宏

非必要不要使用自定宏,如果一定要使用,要保证唯一性,以防止对其他文件的干扰。

  • 全部大写
  • 下划线作为分割
  • 使用 {文件名}_{宏名}
// 当前文件为 abc, 宏为myself_pi
#define ABC_MYSELF_PI 3.3333

文件后缀

  1. .h 文件通常只包含声明,不包含定义
  2. .hpp 通常包含声明和定义
  3. .cpp 通常值包含定义

注释

中英文注释均可

  • 函数注释: 输出,输入含义; 简单描述工作原理
  • 控制语句注释: 描述各个控制分支的工作内容
  • 循环注释: 描述功能
  • 复杂算法注释: 描述功能,附带算法介绍url(避免读代码的人搜错关键字)

git

代码优美

计算和逻辑进行分离

分离原则: 为完成一个目的代码行数占了半个屏幕,拆分为一个函数

  • 为了完成一个目的占用过长的代码(比如代码长度超过半屏),考虑提取成一个函数,或单独成一个文件
  • 对于if else中一个分支代码长度超过大半个屏幕的,考虑提取成一个函数。

减少重复代码

  • 对于频繁使用的一段代码,考虑提提取成一个函数
  • 对于连续一段逻辑相似代码,考虑将需要处理的内容放入到数组中,使用循环处理数组。

清理无关代码

  • 提交代码前,清理(非注释)用于debug的代码
  • 清理未使用的代码,编译时添加 -Wunused 可以检查出部分定义但未使用的代码( add_compile_options(-Wunused))

更多内容 B站-改善丑陋的代码

提高效率

命名缩写(如果非要用)

全称 缩写 翻译
calculate calc 计算
addition add
subtraction sub
multiplication mul 乘法
division div 除法
hexadecimal hex 十六进制
array arr 数组、集合
list lst 列表
Sequence seq
Segment (s) seg
stack stk
dictionary dict 字典
character char 字符
string str 字符串
text txt 文本
float flt 浮动
number num 数量、编号
image img 图像
bitmap bmp 位图
table tbl
link lnk 链接
lable lbl 标签
flag flg 标志
container cntr 容器
time stamp ts 时间戳
length len 长度
positive pos
negative neg
statistic stat 统计
summation sum
average avg 平均
maximum max 最大值
minimum min 最小值
middle mid 中值
increment inc 增加
increase inc 增加
decrease dec 减少
different diff 不同的
frequency freq 频率
optimization opt 最优
total tot 全部的
vertical vert 垂直
horizontal horz 水平
row row
column col
positon pos 位置
point pt
pointer ptr 指针
index idx 索引、指示
value val
reference ref 引用
status stat 状态
original orig 原件
source src 源头
address addr 地址
coordinates coord 坐标
previous pre 前一个
current cur 当前的
initalize init 初始化
destination dst 或 dest 目的
iteration itr 或 iter 循环、迭代
count cnt 计数器
temporary temp 或 tmp 临时
source src 源头
resource res 资源
result res 结果
return ret 返回
return rtn 返回
answer ans 响应、回答
buffer buf 或 buff 缓冲区
database db 数据库
administrator adm 管理员
password pwd 密码
user usr 用户
directory dir 目录
document doc 文档
library lib
function func 函数
object obj 对象
argument arg 实参
instance ins 实例
variable var 变量
parameter param 参数 (形参)
encode enc 编码
print prn 打印
delete del 删除
insert ins 插入
error err 错误
break brk 间断
package pkg 打包
escape esc 退出
execute exec 执行
command cmd 命令
configuration config 配置
edit edt 编辑
display disp 显示
initialize init 初始化
trigger trig 触发
capture cap 或 capt 捕获
system sys 系统
environment env 环境
window win(wnd) 窗口
device dev 设备
message msg 消息
signal sig 信号
information info 信息
error err 错误
drone uav 无人机
ugv 无人车
callback cb 回调函数(在后doSomethingCb)
publish pub
subscribe sub
velocity vel 速度
Quaternion quat 四元数
Clone this wiki locally