C++代码规范

ops/2025/3/30 14:44:17/

c++代码规范

总体原则类和函数设计指导原则、保证静态类型安全、保证内存安全、遵循C++ISO标准、优先编译时检查错误、在编译时无法实施的检查,在运行时检查、使用命名空间来限定作用域、优先使用C++特性而不是c特性,并且优先使用标准库
静态类型安全静态安全类型设计是指在编程语言的静态类型系统中使用类型来确保代码的安全性和正确性。它强调在编译时发现并捕捉潜在的类型错误,从而减少在运行时出现错误的可能性。
保证内存安全内存访问错误包括:1、内存越界访问 2、释放以后继续访问内存 3、解引用空指针 4、内存没有初始化 5、把指向局部变量的引用或者指针传递到了函数外部或者其他线程中 内存泄漏:1、申请的内存或者资源没有及时释放
内核风格-蛇形风格单词全小写,下划线分割
常量本条款中的常量指的是以constexpr 或const 修饰的,其值在程序生命周期内固定不变的对象。 当常量采用全大写,下划线分割的命名风格时,需要注意避免和宏的名字冲突。因为在编译代码时,如果宏的名字与常量名字相同,会将常量替换为宏的内容。
命名空间、类型、函数的命名使用大驼峰命名风格
函数命名一般采用动词或者动宾结构。
单词缩写应当作单个单词处理,以提升可读性。
注释相关当函数遵循某接口约定且存在未使用参数时,可通过如下方式注释掉未使用参数,注释写在类型的右边并且与类型之间至少留有1个空格。被注释掉的参数名应当和声明中的参数名一致。
头文件注释包含版权2012 是文件首次创建年份,而 2018 是文件最后修改年份。 我看trafficLight工程代码源文件也加了版权声明
TODO相关TODO/TBD 注释一般用来描述已知待改进、待补充的修改点。
FIXME 注释一般用来描述已知缺陷。
建议使用空格进行缩进,每次缩进为 4 个空格。避免使用制表符(‘\t’)进行缩进。
当前几乎所有的集成开发环境(IDE)和代码编辑器都支持配置将Tab键自动扩展为 4 空格输入。
对于输入参数,拷贝代价小的类型传值,拷贝代价大的类型传const引用
unique_ptr不能被复制,只能被移动,并且移动代价小,
设计函数时,优先使用返回值而不是输出参数,返回多个值时,优先使用返回类型为struct或std::tuple
函数参数应尽量避免使用 void* 类型,让编译器在编译时就检查出类型不匹配的问题:
在基于接口编程时,使用基类的引用或指针来作为函数参数
在使用泛型编程时,使用模板 T& 或 T* 来匹配不同类型的参数
成员变量优先使用声明时初始化或者构造函数初始化列表初始化
abs用法abs函数是取差值,或者是绝对值。参数不能是无符号类型(因为参数是无符号类型相减还是正数,而且还会减翻)。所以abs的参数(两个值计算差值),如果是无符号类型一定要转成有符号类型。
std::roundround、ceil、floor几个函数都是取整。参数类型一定是floor或者double,因为如果参数是整型,比如取平均值,整型除以2结果还是整数。就不存在小数进行四舍五入了。所以需要转换成浮点型数据类型。方式1:uint_32 A = 12; float result = statis_cast(A) / 2; 方式1:uint_32 A = 12; float result = A / 2.0f;
整形数据类型减翻问题比如需求为判断一个值A是否比值B大5。代码为uint32_t A = 5; uint32_t B = 7; if (A - B > 5) { std::cout << “A > B” << std::endl; } else { std::cout << “A < B” << std::endl; }。打印结果为"A>B"。错误原因在于整型减翻。这边需要修改成有符号类型相减。方式:if (static_cast(A) - static_cast(B) > 5),打印结果为"A<B"。方式二:if (A > B + 5) 也能实现效果
代码注释准确、与代码一致

http://www.ppmy.cn/ops/170168.html

相关文章

纯css实现环形进度条+动画加载效果

写在最前面&#xff1a; 本文是小程序开发中&#xff0c;使用纯csshtml实现的进度圆环动画加载效果&#xff08;换成vue也是一样的&#xff09;。 如果你的项目可以用echarts&#xff0c;建议还是用插件&#xff0c;手搓不易&#xff0c;这很难评。 实现效果如上图&#xff1a;…

从车间到数字生态:MES如何引领制造业智能化革命‌

在全球制造业加速迈向工业4.0的浪潮中&#xff0c;传统生产模式正经历颠覆性变革。制造执行系统&#xff08;MES&#xff09;作为连接物理车间与数字世界的核心纽带&#xff0c;正从“生产辅助工具”升级为“智能决策大脑”&#xff0c;推动制造业向数据驱动、柔性化与可持续化…

gradio调用多个CSS的HTML页

很多博客介绍的gradio读取html和css比较简单&#xff0c;如果要做很细致的前端页面优化&#xff0c;比如丰富的响应式的cssjs&#xff0c;至少要有html多个css&#xff0c;是暂不能实现的。bootstrap、font-awesome、jquery等 方案一当然是直接更换htmlcss为主的部署方式&#…

前端国际化-插件模式

文章目录 Webpack 插件开发解析中文调用有道翻译 API生成 JSON 语言文件React 国际化实现 Webpack 插件开发 创建 i18n-webpack-plugin.js 插件&#xff1a;在 src 目录下扫描所有文件使用 babel-parser 解析 JavaScript/JSX 代码识别中文文本通过有道翻译 API 翻译生成 local…

涨薪技术|Kubernetes(k8s)环境部署实战

01准备工作 1&#xff09;修改主机名 hostnamectl set-hostname masterbash #更新主机名 2&#xff09;关闭所有机器的swap分区 sudo swapoff -a#修改/etc/fstab&#xff0c;注释掉swap行sudo vi /etc/fstab 3&#xff09;配置固定ip地址 #配置路径cd /etc/sysconfig/netw…

网络安全基础:五类安全服务、八种安全机制与OSI七层模型的全面解析

目录 引言 五类安全服务 2.1 认证服务 2.2 访问控制 2.3 数据保密性 2.4 数据完整性 2.5 不可否认性 八种安全机制 3.1 加密机制 3.2 数字签名 3.3 访问控制机制 3.4 数据完整性机制 3.5 认证交换机制 3.6 流量填充机制 3.7 路由控制机制 3.8 公证机制 OSI七层…

利用脚本和Shader制作屏幕后处理效果

一、屏幕后处理的实现原理 该屏幕后处理的原理是将渲染完成后的屏幕纹理通过脚本和Shader完成一些操作&#xff0c;然后实现各种屏幕效果 而实现屏幕后处理效果的主要操作就是获得当下渲染完成后的屏幕图像&#xff0c;其中unity提供了一个函数用于获取此图像——OnRenderIma…

python每日十题(9)

外存储器的容量一般都比较大&#xff0c;而且大部分可以移动&#xff0c;便于在不同计算机之间进行信息交流。外存储器中数据被读入内存储器后&#xff0c;才能被CPU读取&#xff0c;CPU不能直接访问外存储器。本题答案为A选项。 进程是指一个具有一定独立功能的程序关于某个数…