当前位置: 首页 > news >正文

代码规范(C/C++规范)

文章目录

  • 前言
  • 个人编写的代码规范
    • 链接
    • 请求合作
    • 大体章节
  • END

前言

  • 什么是代码规范
    • 一套用于统一代码开发的准则
  • 为什么需要代码规范
    • 提升代码可读性,提升团队效率

个人编写的代码规范

近期本人编写了一份以C/C++为主的代码规范。

其他语言开发者也可以阅读参考。

本文档可供中小团队二次修改后直接使用。

链接

https://github.com/cuber-lotus/CodeStandard

请求合作

想对于各种成熟的代码规范,本文档还有很多欠缺,有格式方面,有内容方面,有准确性方面。

因此希望与大家一起来完善本规范。

1539349804@qq.com

大体章节

最后放一个大体的章节目录

  • 代码规范

  • 前言

    • 目的

    • 宗旨

    • 使用说明

  • 包和文件

  • 用路径来管理不同模块

  • 头文件与源文件

  • 文件

  • 注释

    • /**/与//

    • 文件头注释

    • 类注释

    • 函数注释

    • 代码注释

    • TODO注释

    • 尾部注释

    • 细节技巧

    • 特殊情况

  • 缩进

    • 使用空格而不是tab

    • 注释与注释目标对齐

    • 类权限与class关键字对齐

    • 不缩进情况

    • 行长的限定

    • 换行

  • 语句块

    • for, while, if, switch, case, do, goto, try

    • if else

    • switch

    • goto

    • 逗号后加空格

    • 判断语句较长时运算符换行保持统一

    • 指针和引用左右选择一边留空格

    • 综合举例

  • 命名

    • 常用命名规范类型

    • 长度应该适中

    • 缩写

    • 文件

    • namespace

    • class & struct

    • 函数

    • 变量

    • enum

    • union

    • using和typedef

    • 注意

  • 运算符

    • 多元运算符要左右空格

    • 一元运算符要贴近变量成员访问符号要贴近变量

    • 减少使用自增++和自减–

    • 使用括号增加可读性

    • 比较运算符左侧尽量写常量

    • 用比较运算符代替非0即1

  • 函数

    • 函数功能应该明确

    • 使用引用,减少使用指针

    • 重载函数应该相邻编写

    • 指针参数应该检测合法性

    • lambda表达式

    • 继承顺序

    • 权限顺序

    • 内容顺序

    • 构造函数顺序

    • 运算符重载顺序

    • 使用explicit避免隐式类型转换

    • 自定义拷贝和移动语义

    • 使用override, delete, default, final

    • 特殊情况

  • 内存管理

    • 使用new/delete而非malloc/free

    • 合理使用智能指针

  • 其他

    • 异常

    • 类型转换

    • 明示类型长度

    • 初始化

  • 团队合作

    • 不要修改不是自己写的文件

    • 不要修改已经确定提供给外部的接口名

  • 后记




END

相关文章:

代码规范(C/C++规范)

文章目录前言个人编写的代码规范链接请求合作大体章节END前言 什么是代码规范 一套用于统一代码开发的准则 为什么需要代码规范 提升代码可读性,提升团队效率 个人编写的代码规范 近期本人编写了一份以C/C为主的代码规范。 其他语言开发者也可以阅读参考。 本…...

春招冲刺(九):计算属性和监视属性总结

计算属性和监视属性总结 Q1&#xff1a;计算属性 姓&#xff1a;<input type"text" v-model"firstName"><br><br> 名&#xff1a;<input type"text" v-model"lastName"><br><br> 姓名&#xff…...

数据挖掘(作业1)

实验开始前先配置环境 以实验室2023安装的版本为例&#xff1a; 1、安装anaconda&#xff1a;&#xff08;anaconda自带Python,安装了anaconda就不用再安装Python了&#xff09; 下载并安装 Anaconda3-2022.10-Windows-x86_64.exe 自己选择安装路径&#xff0c;其他使用默认…...

【UE4 RTS游戏】01-项目准备

步骤新建一个工程&#xff0c;选择俯视角游戏模板我命名工程如下&#xff1a;删除场景内的所有cube再删除Floor和Wall删除TopDownCharacter删除“NavgationMeshBoundVolume”删除“TamplateLabel”和“RecastNavMesh-Default”删除LightmassImportanceVolume、PostProcessVolum…...

登录系统账号检测--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例8&#xff1a;登录系统账号检测 登录系统一般具有账号密码检测功能&#xff0c;即检测用户输入的账号密码是否正确。若用户输入的账号或密码不正确&#xff0c;提示 “用户名或密码错误”和“您还有*次机会”&#xff1b; 若用户输入的账号和密码正确&#xff0c;提示“登…...

CentOS8基础篇12:使用RPM管理telnet-server软件包

一、RPM包管理工具简介 RedHat软件包管理工具(RedHat Package Manager&#xff0c;RPM) RPM软件包工具常用于软件包的安装、查询、更新升级、校验、卸载以及生成.rpm格式的软件包等操作。 RPM软件包工具只能管理后缀是.rpm的软件包。软件包的命名格式&#xff1a; 软件名称…...

IT女神文章记录之自己

匆匆时光&#xff0c;一转眼自己已经从一个学生转变成一个职场工作者了刚出校园的时候&#xff0c;对职场充满了憧憬&#xff0c;觉得自己可以大展身手然后其实在我毕业后2年内&#xff0c;踏入码农阶段的时候&#xff0c;是一段非常压抑的工作&#xff0c;不知道谁能体会到那种…...

Compose 动画 (四) : AnimatedVisibility 各种入场和出场动画效果

AnimatedVisibility中的EnterTransition 和 ExitTransition &#xff0c;用来配置入场/出场时候的动画效果。 默认的入场效果是 fadeIn() expandVertically() 默认的出场效果是 fadeOut() shrinkVertically() 1. EnterTransition和ExitTransition支持的动画 enter的参数类…...

notepad++学习小技巧

不要小瞧了notepadd 这个可是我们的cv好帮手。。。 实战1背景&#xff0c;我找一个同事要表结构 结果他给我了一个xml。顿时一懵&#xff0c;我也不知道为啥好像是从前端扣下来的。 建表我只需要 columnName, displayName当作是comment&#xff0c; dataTypeNamecolumnType借鉴…...

Android supports-screens 屏幕适配

基本概念 supports-screens用于设置屏幕相关&#xff0c;处于Manifest的子标签中。 使您能够指定应用支持的屏幕尺寸&#xff0c;并为比应用支持的最大屏幕还大的屏幕启用屏幕兼容性模式。请务必始终在应用中使用此元素指定应用支持的屏幕尺寸。 注意&#xff1a;建议不要在屏…...

操作系统基础知识介绍之Mixed CriticalitySystems——混合关键系统

一、发展背景 在嵌入式场景中&#xff0c;虽然Linux已经得到了广泛应用&#xff0c;但并不能覆盖所有需求&#xff0c;例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统 的用武之地。有些应用场景既需要Linux的管理能力、丰富的生态又需要实时操作系统的高实时、…...

【数据结构初阶】详解链表OJ题

目录一.删除链表中等于给定值的节点二.合并有序链表并返回三.链表的回文结构1.反转单链表2.返回非空链表的中间节点四.输出链表倒数第K个节点五.基于给定值x分割单链表六.返回两个链表的第一个中间节点一.删除链表中等于给定值的节点 我们先来看第一题(题目链接): 因为我们需…...

Java基本数据类型变量自动提升、强制类型转换、String基本类型使用

文章目录基本数据类型变量自动提升特殊情况强制类型转换String基本类型使用基本数据类型变量自动提升 规则&#xff1a; 将取值范围小&#xff08;或容量小&#xff09;的类型自动提升为取值范围大&#xff08;或容量大&#xff09;的类型 。 byte、short、char-->int-->…...

Redis锁与幂等性不得不说的故事

前言&#xff1a; 相信很多小伙伴对缓存锁都不陌生&#xff0c;但是简单的缓存锁想要用好还是需要一些功力。本文总结了笔者多年使用缓存所的一些心得&#xff0c;欢迎交流探讨~ 幂等模型&#xff1a; 幂等场景一般由查重写入两步操作组成&#xff0c;两步操作组成一个最小完…...

Spark 应用调优

Spark 应用调优人数统计优化摇号次数分布优化Shuffle 常规优化数据分区合并加 Cache优化中签率的变化趋势中签率局部洞察优化倍率分析优化表信息 : apply : 申请者 : 事实表lucky : 中签者表 : 维度表两张表的 Schema ( batchNum&#xff0c;carNum ) : ( 摇号批次&#xff0c…...

synchronized 与 volatile 关键字

目录1.前言1.synchronized 关键字1. 互斥2.保证内存可见性3.可重入2. volatile 关键字1.保证内存可见性2.无法保证原子性3.synchronized 与 volatile 的区别1.前言 synchronized关键字和volatile是大家在Java多线程学习时接触的两个关键字&#xff0c;很多同学可能学习完就忘记…...

【0成本搭建个人博客】——Hexo+Node.js+Gitee Pages

目录 1、下载安装Git 2、下载安装Node.js 3、使用Hexo进行博客的搭建 4、更改博客样式 5、将博客上传到Gitee 6、更新博客 首先看一下Hexo的博客的效果。 1、下载安装Git Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本…...

【面试实战】认证授权流程及原理分析

认证授权流程及原理分析 1、认证 (Authentication) 和授权 (Authorization)的区别是什么?2、什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ?3、Cookie 和 Session 有什么区别?如何使用Session进行身份验证?1、认证 (Authentication) 和授权 (Authorizatio…...

TPM命令解析之tpm2_startauthsession

参考网址链接&#xff1a;tpm2-tools/tpm2_startauthsession.1.md at master tpm2-software/tpm2-tools GitHub 命令名称 tpm2_startauthsession 功能 启动一个TPM会话。 命令形式 tpm2_startauthsession [OPTIONS] 描述 启动一个TPM会话。默认是启动一个试验&#xff08…...

第14章 局部波动率模型

这学期会时不时更新一下伊曼纽尔德曼&#xff08;Emanuel Derman&#xff09; 教授与迈克尔B.米勒&#xff08;Michael B. Miller&#xff09;的《The Volatility Smile》这本书&#xff0c;本意是协助导师课程需要&#xff0c;发在这里有意的朋友们可以学习一下&#xff0c;思…...

云原生周刊:开源“赢了”,但它可持续吗?

日前召开的 State of Open 会议上&#xff0c;开源“赢了”&#xff0c;但如果政府和企业不站出来确保生态系统在未来的弹性和可持续性&#xff0c;那么它仍然会失败。 OpenUK 首席执行官 Amanda Brock 在开幕式上表示&#xff0c;数字化和开源在过去 5 到 10 年的进步提升了工…...

读《企业IT架构转型之道》

本书还没读完&#xff0c;暂摘抄一些概念&#xff0c;因为自身做的新系统也在转型&#xff0c;从单体式到一体化一年来遇到很多问题有技术上的&#xff0c;也有团队协作的&#xff0c;过程是痛苦且复杂的&#xff0c;所以在刚翻阅前几十页时候&#xff0c;对于淘宝技术团队转型…...

Qt中的QTcpSocket、QWebSocket和QLocalSocket

同时实现了QTcpSocket、QWebSocket和QLocalSocket的简单通讯deamon&#xff0c;支持自动获取本机ip&#xff0c;多个客户端交互。在这个基础上你可以自己加错误检测、心跳发送、包封装解析和客户端自动重连等功能。 获取本机电脑ip&#xff1a; QString Widget::getIp() {QSt…...

枚举学习贴

1. 概述 1.1 是什么 枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解&#xff1a;枚举属于一种特殊的类&#xff0c;里面只包含一组有限的特定的对象 1.2 枚举的二种实现方式 自定义类实现枚举使用 enum 关键字实现枚举 1.3 什么时候用 存在有限…...

【C++】30h速成C++从入门到精通(继承)

继承的概念及定义继承的概念继承&#xff08;inheritance&#xff09;机制是面向对象程序设计使代码可以复用的重要手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序…...

Java多线程还不会的进来吧,为你量身打造

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…...

8 神经网络及Python实现

1 人工神经网络的历史 1.1 生物模型 1943年&#xff0c;心理学家W.S.McCulloch和数理逻辑学家W.Pitts基于神经元的生理特征&#xff0c;建立了单个神经元的数学模型&#xff08;MP模型&#xff09;。 1.2 数学模型 ykφ(∑i1mωkixibk)φ(WkTXb)y_{k}\varphi\left(\sum_{i1…...

使用QIS(Quantum Image Sensor)图像重建总结(1)

最近看了不少使用QIS重建图像的文章&#xff0c;觉得比较完整详细的还是Abhiram Gnanasambandam的博士论文&#xff1a;https://hammer.purdue.edu/articles/thesis/Computer_vision_at_low_light/20057081 1 介绍 讲述了又墨子的小孔成像原理&#xff0c;到交卷相机&#xf…...

【SpringCloud】SpringCloud教程之Nacos实战(二)

目录前言一.Nacos实现配置管理二.Nacos拉取配置三.Nacos配置热更新(自动刷新&#xff0c;不需要重启服务)1.在有Value注入变量所在类添加注解2.新建类用于属性加载和配置热更新四.Nacos多环境配置共享1.多环境共享配置2.配置的加载优先级测试3.配置优先级前言 Nacos实战一&…...

利用Qemu工具仿真ARM64平台

Windows系统利用Qemu仿真ARM64平台0 写在最前1 Windows安装Qemu1.1 下载Qemu1.2 安装Qemu1.3 添加环境变量1.4测试安装是否成功2. Qemu安装Ubuntu-Server-Arm-642.1 安装前的准备2.2 安装Ubuntu server arm 64位镜像3 Windows配置Qemu网络和传输文件3.1 参考内容3.2 Windows安装…...

学做网站教学百度网盘/企业网站开发公司

为什么说这个单词表时最重要的英语单词表呢&#xff1f;首先来看一下国外教授也就是制作这个单词表的几位教授的统计图其中NGSL就是本词汇表&#xff0c;其中包含2818个单词&#xff0c;且在认知了这2818个但此后基本上能看懂生活中90%的材料。GSL和AWL真的有那么权威吗&#x…...

网站开发周期价格/站长之家ip地址归属查询

前段时间我一直在向大家推荐CSS3和HTML5的东西&#xff0c;尽管看上去很炫&#xff0c;但也有不少网友抱怨兼容性问题&#xff0c;所以今天开始我也会陆续向大家介绍一些兼容性较好的jQuery插件。今天先分享一款利用jQuery实现的淡入淡出下拉菜单&#xff0c;看上去非常简单。先…...

做logo找灵感的网站/网站建设哪家好

#include<stdio.h>int main(){int i,j,k,line,m;printf("几行&#xff1f;:");scanf("%d",&line);m(line1)/2; //控制上半行for(i1;i<m;i) //i从1开始到中间行{for(k0;k<m-i;k) //输出每行前面的空格{printf(" &…...

网站制作学习网站/优化关键词排名哪家好

目录 Collection1. 介绍2. 继承关系3. 方法4. JDK8新增的方法removeIf(Predicate<? super E> filter)Spliterator<E> spliterator()Stream<E> stream()Stream<E> parallelStream()5. 总结Collection 1. 介绍 该类是所有集合的子类 2. 继承关系 3. 方法…...

北京市疫情最新情况/优化网站怎么做

点击上方蓝字“Revit”关注我们吧&#xff01;目前100000人已关注加入我们-正文-BIM社区网友解答&#xff1a;1、首先在电脑中打抄开revit&#xff0c;在Revi的三袭维视图界面&#xff0c;点击左上角图标suit工作流方式。2、将Revit的三维模型通过以场景文件直接在3Dmax中打开。…...

淘宝网站建设可靠/阿里云免费建站

1. CtrlshiftV呼出历史拷贝数据 2. 拷贝纯文本右键---copy as plain text 3. 鼠标移动显示快速定义文档 4. 设置logcat颜色 5. Ctrl空格 智能匹配 6. fori---自动完成for语句 ret true;加上.就可以添加try catch语句...