引擎之旅 前传:C++代码规范
自己以前写代码时,一个项目一个风格。单人开发的工作使得我并没有注意到代码规范性和可读性的问题。每当项目结束后,看到自己杂乱无章的代码,完全没有二次开发和重构的欲望。
写代码就应该像写诗一样优雅。 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++代码规范的更多相关文章
- 使用CEfSharp之旅 前后端访问代码
1.引入CEfSharp newget包 2.把平台配置为X86或X64,any cpu不支持此控件 3.引入命名空间 using CefSharp; using CefSharp.WinForms; ...
- JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...
- ESP8266开发之旅 进阶篇⑤ 代码规范 —— 像写文章一样优美
1.前言 之前,一直在跟大伙分享怎么去玩蓝牙模块,怎么去玩wifi模块,怎么去玩json,然后有很多小伙伴就留言各种问题或者说直接怼他的代码过来让我看,然后我就一脸懵逼(代码中到处各种abcd ...
- SpringMVC深度探险(一) —— SpringMVC前传
在我们熟知的建立在三层结构(表示层.业务逻辑层.持久层)基础之上的J2EE应用程序开发之中,表示层的解决方案最多.因为在表示层自身的知识触角很多,需要解决的问题也不少,这也就难免造成与之对应的解决方案 ...
- 在Git上如何强推代码规范
引言 最近参加了“前端规范制定topic”小组,小组成员一起制定了html.css.js.es6.vue和react等规范,但规范制定好了怎么进行推广去强制执行呢,已知我们的项目都是用git做管理的, ...
- 猪懂傻改之《powershell 代码规范》
猪懂傻改之<powershell 代码规范> 脚本程序员或许都经历过这样的场景:接手别人的代码时,因为没有注释,变量名五花八门,模块之间逻辑关系如麻,弄得满头雾水,一脸茫然,痛定思痛之后不 ...
- Alpha代码规范、冲刺任务与计划
Alpha代码规范.冲刺任务与计划 团队名称: 云打印 作业要求: Alpha代码规范.冲刺任务与计划 作业目标:代码规范.冲刺任务与计划. 团队队员 队员学号 队员姓名 个人博客地址 备注 2216 ...
- 项目Alpha冲刺——代码规范、冲刺任务与计划
作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...
- idataway_前端代码规范
1.前后端json对接的规范. 前后端的json代码规范 result ={ success:”true”,//true表示成功,false表示失败. data:{}, //数据 errorCode: ...
随机推荐
- 全新升级的AOP框架Dora.Interception[汇总,共6篇]
多年之前利用IL Emit写了一个名为Dora.Interception(github地址,觉得不错不妨给一颗星)的AOP框架.前几天利用Roslyn的Source Generator对自己为公司写的 ...
- 52 条 SQL 语句性能优化策略,建议收藏
本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行nul ...
- URL网络编程
package com.atguigu.java1; import java.io.FileOutputStream; import java.io.IOException; import java. ...
- 使用APICloud开发app录音功能
mp3Recorder模块封装在iOS.Android下录音直接生成mp3,统一两个平台的录音生成文件,方便双平台之间的交互,减少录音完成后再转码的过程:同时提供分贝波形图显示UI:使用该模块前需 ...
- Markdown扩展语法
目录 Markdown 语法补充 一.快速生成 HTML 表格代码 在线表格编辑器--TablesGenerator 二. 插入视频.音频或GIF 1. 视频 2. 音频 方法一 方法二 方法三 3. ...
- 02 MySQL_数据库相关的SQL
数据库相关的SQL 1. 查看所有数据库 show databases; 2. 创建数据库 格式:create database 数据库名称: 示例: create database db1; 3. ...
- CF1703B ICPC Balloons 题解
题意:输入每个团队及团队的解决问题数,若是第一次解决则获得两个气球,其余获得一个气球. 做法:开一个数组记录是否为第一次解决该问题,直接模拟. #include<cstdio> #incl ...
- 在less里面使用js函数
.colorPaletteMixin() { @functions: ~`(function() { this.colorPalette = function() { return '123px'; ...
- 搭建一个完整的K8S集群-------基于CentOS 8系统
创建三个centos节点: 192.168.5.141 k8s-master 192.168.5.142 k8s-nnode1 192.168.5.143 k8s-nnode2 查看centos系统版 ...
- PhoneBean实体类的封装和map输出键值对的设置
之前我们写好了bean类型.现在我们再看看这个需求中,map和reduce各自的流程. Map阶段: 字段切分以后保留如下字段:以第一行为例,就保留13726230503112 2481 24681 ...