自己以前写代码时,一个项目一个风格。单人开发的工作使得我并没有注意到代码规范性和可读性的问题。每当项目结束后,看到自己杂乱无章的代码,完全没有二次开发和重构的欲望。

写代码就应该像写诗一样优雅。 by:沃茨基硕德

由于是一个新的项目的重新起航。千里之堤,溃于蚁穴。我将代码规范作为我整个项目的前传,顺便也把我之前的陋习给改掉。通过在网上对于C++代码规范的搜索,我找到了Google开源项目风格指南[译文]

参考这份指南,结合我个人的习惯,我也给自己的项目制定了一个标准。下面将各个部分进行定义和规范。(不会完全按照指南,只是为了我的项目代码看起来更统一)

头文件

  • 通常一个.cpp文件需要对应一个.h文件。(单元测试代码和包含main()函数的cpp文件除外。)
  • 如果.h文件声明了一个模板和内联函数,规定将函数实现写在头文件中。
  • 每个头文件必须使用#define保护,以防止多重编译
#ifndef HeadName
#define HeadName //... #endif //HeadName
  • 前置声明能不用则尽量不用。优先处理好头文件之间的关系,若不得不使用,则要注明依赖关系。
  • 内联函数:代码行数<10 才使用内联函数

命名

  • 作用域、类名、函数名用大写字母开头
namespace TurboEngine{
class Time
{
public:
int GetFps(); public:
static int ms_CalType; //静态变量 ms_
int m_StartTime; //成员变量 m_
const mk_DayInWays; //常量命名 mk_
}
}

注释

  • 使用// 或 /**/即可
  • 文件注释:加上版权
  • 类注释:
// <Description>
// Example:
// xxxxxxxxx(可写可不写)

其他

  • 因为引擎中是分模块的,为了更方便今后整理自己的思绪,我希望自己能够对每一个模块用单独的注释文件进行注释。注释文档主要包括:

    • 描述
    • 文件列表
    • 其他说明
    • 第三方依赖
<Description>
//... <FileList>
//... <Others>
//... <Reference>
//...
  • 整理API文档工具

引擎之旅 前传:C++代码规范的更多相关文章

  1. 使用CEfSharp之旅 前后端访问代码

    1.引入CEfSharp newget包 2.把平台配置为X86或X64,any cpu不支持此控件 3.引入命名空间 using CefSharp; using CefSharp.WinForms; ...

  2. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结   JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...

  3. ESP8266开发之旅 进阶篇⑤ 代码规范 —— 像写文章一样优美

    1.前言     之前,一直在跟大伙分享怎么去玩蓝牙模块,怎么去玩wifi模块,怎么去玩json,然后有很多小伙伴就留言各种问题或者说直接怼他的代码过来让我看,然后我就一脸懵逼(代码中到处各种abcd ...

  4. SpringMVC深度探险(一) —— SpringMVC前传

    在我们熟知的建立在三层结构(表示层.业务逻辑层.持久层)基础之上的J2EE应用程序开发之中,表示层的解决方案最多.因为在表示层自身的知识触角很多,需要解决的问题也不少,这也就难免造成与之对应的解决方案 ...

  5. 在Git上如何强推代码规范

    引言 最近参加了“前端规范制定topic”小组,小组成员一起制定了html.css.js.es6.vue和react等规范,但规范制定好了怎么进行推广去强制执行呢,已知我们的项目都是用git做管理的, ...

  6. 猪懂傻改之《powershell 代码规范》

    猪懂傻改之<powershell 代码规范> 脚本程序员或许都经历过这样的场景:接手别人的代码时,因为没有注释,变量名五花八门,模块之间逻辑关系如麻,弄得满头雾水,一脸茫然,痛定思痛之后不 ...

  7. Alpha代码规范、冲刺任务与计划

    Alpha代码规范.冲刺任务与计划 团队名称: 云打印 作业要求: Alpha代码规范.冲刺任务与计划 作业目标:代码规范.冲刺任务与计划. 团队队员 队员学号 队员姓名 个人博客地址 备注 2216 ...

  8. 项目Alpha冲刺——代码规范、冲刺任务与计划

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...

  9. idataway_前端代码规范

    1.前后端json对接的规范. 前后端的json代码规范 result ={ success:”true”,//true表示成功,false表示失败. data:{}, //数据 errorCode: ...

随机推荐

  1. idea部署项目运行没问题,但是页面404。

    解决方案: 这个位置不要添加内容. 参考:https://blog.csdn.net/hupixiong/article/details/105443606

  2. C#实现一个万物皆可排序的队列

    需求 产品中需要向不同的客户推送数据,原来的实现是每条数据产生后就立即向客户推送数据,走的的是HTTP协议.因为每条数据都比较小,而数据生成的频次也比较高,这就会频繁的建立HTTP连接,而且每次HTT ...

  3. 搭建企业级实时数据融合平台难吗?Tapdata + ES + MongoDB 就能搞定

      摘要:如何打造一套企业级的实时数据融合平台?Tapdata 已经找到了最佳实践,下文将以 Tapdata 的零售行业客户为例,与您分享:基于 ES 和 MongoDB 来快速构建一套企业级的实时数 ...

  4. VMare 设置固定IP和网段

    切换目录 cd /etc/sysconfig/network-scripts ls查看当前目录下的东西 找到ipcfg- 开头的,而且不是iocfg-lo,而上图就是那个ifcfg-ens33. 则进 ...

  5. ooday04 Java_面向对象_重写_static

    方法的重写(override/overriding):重新写.覆盖 发生在父子类中,方法名相同,参数列表相同 重写方法被调用时,看对象的类型------------这是规定,记住就OK 当派生类觉得超 ...

  6. 倍增求RMQ

    RMQ,即区间最值查询,给定一个序列,求区间l-r的最大值.最小值. st表求RMQ,预处理On*logn,查询O1. 预处理: void init_rmq() { for(rll j=1;j< ...

  7. CF576A Vasya and Petya's Game

    题目大意: 给定一个数字 n,现在 Vasya 要从 1∼n 中想一个数字 x. Petya 向 Vasya 询问 "x 是否能整除 y?" ,通过 Vasya 的回答来判断 x ...

  8. 一步一步在angular11中添加多语言支持

    1.新建angular 2.添加@angular/localize ng add @angular/localize 3.设置默认locale_id,在app.module.ts中 import { ...

  9. 排查jar包使用的第三方包并导出清单

    找到jar包 cd /data/xx/lib/xxx/ 解压缩 unzip xxx.jar -d tempjarfile 进入lib目录 cd tempjarfile/BOOT-INF/lib 生产j ...

  10. 基于C++17的泛型函数容器实现方法研究