###Maintainable C++
点击查看Evernote原文。
#@author: gr
#@date: 2014-08-15
#@email: forgerui@gmail.com
记录一些标准规范。让自己的编码更可读,更可维护。(代码风格尽量统一)
一、Contents
1. tab or spaces
尽量使用spaces
取代tab
,tab
键可能在不同编辑器缩进不同,导致混乱。把tab
使用4个space代替。
2. 代码换行
如果一行超过80个字符,则需要进行换行。第二行应以第一行同一级的位置开始,如果这样太靠右,可以缩进8个空格。换行的地方可以在,
(逗号)后面,或者操作符前面,保证不会因为换行导致歧义。
3. 在for, if, while等后面需要空一格
空一格会保证代码更易读,更优雅。
for(int i; i < 10; ++i){}
for (int i; i < 10; ++i){}
while(i < 10){}
while (i < 10){}
4. 单行注释上方尽量空一行
//快速排序
quick_sort(a);
//归并排序
merge_sort(a);
更好的写法是,下面的写法在代码多的时候更优秀。
//快速排序
quick_sort(a);
//归并排序
merge_sort(b);
5. 操作符两边空格
操作符两边都要空格,逗号后面要空格,最基本的编程素养,重要性就不说了。注意要手敲这些空格,强烈不推荐使用代码格式化工具去做这些工作,如果以后在文本编辑器中,没有IDE,那写的代码简直是一坨。
int a=1,b=3,c=4;
int a = 1, b = 3, c = 4;
if(a>b);
if (a > b);
6. 命名
变量命名尽量统一,比如统一使用小写字母加下划线的格式。
//可以
int node_flag;
int nodeFlag;
//不可以
int Node_Flag;
类型命名使用大小写交替的形式,类型包括class, struct, enum ...
class TrackRouter{};
struct SensorNode{};
enum SensorStatus{RUN, STOP, DESTROY};函数使用大小写字母交替表示,第一个单词首字母小写,之后每个单词首字母大写。
void addTable();
inline int get_status();
文件命名以小写下划线组合。
宏定义使用大写字母下划线。
命名空间小写下划线。
7. 头文件卫士
在头文件中尽量使用头文件卫士。防止头文件被重复引用。
#ifndef _A_H_
#define _A_H_
...
#endif//_A_H_
8. 循环
循环次数多的放在里面,这样可以减少CPU跨切循环层次数。
for (int a = 0; a < 5; a++){
for (int b = 0; b < 100; b++){
//...
}
}
尽量减少循环里的判断。
for (int i = 0; i < 5; i++){
//尽量移到循环外面
if(){}
else{}
}
###Maintainable C++的更多相关文章
- Building Maintainable Software-java篇之Separate Concerns in Modules
Building Maintainable Software-java篇之Separate Concerns in Modules In a system that is both complex ...
- JavaScript Patterns 2.1 Writing Maintainable Code
Revisiting the code after some time has passed requires: • Time to relearn and understand the proble ...
- Building Maintainable Software-java篇之Couple Architecture Components Loosely
Building Maintainable Software-java篇之Couple Architecture Components Loosely There are two ways of co ...
- Practical Go: Real world advice for writing maintainable Go programs
转自:https://dave.cheney.net/practical-go/presentations/qcon-china.html?from=timeline 1. Guiding pri ...
- [转][C++ 11]override and final - write clean and maintainable C++ code
原文: http://arne-mertz.de/2015/12/modern-c-features-override-and-final/ Today I write about a pair of ...
- Maintainable HashCode and Equals Using Apache Commons
Java hashCode and equals methods can be tricky to implement correctly. Fortunately, all majors IDEs ...
- Maintainable JavaScript(编写可维护的JavaScript) PART I Style Guidelines
“Programs are meant to be read by humans and only incidentally( 顺便:偶然地:附带地) for computers to execute ...
- JavaScript Maintainable
1. Avoid conflict with Native Variable namespace
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
随机推荐
- [Objective-c 基础 - 2.5] NSString
1.NSString基本使用 使用%@占位符输出对象 ; ; NSString *str2 = [NSString stringWithFormat:@"My age is %d and n ...
- C# 产生随机密码
using System.Web.Security var rawPassword = System.Web.Security.Membership.GeneratePassword(10,1) re ...
- BAT及各大互联网公司2014前端笔试面试题:JavaScript篇
前面几题是会很基础,越下越有深度. 初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型: ...
- EasyUI datagrid自适应问题解决
在使用js 动态创建EasyUI datagrid时,如果设置fit为true,在显示的时候数据的高度为固定高度不能自适应 解决办法是把fit设为false. 但这样设置后又有个问题,如果把colum ...
- C#开源资源大汇总
C#开源资源大汇总 C#开源资源大汇总 一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行 ...
- linux 常用命令 -- 系统管理工具包: 监视邮件的使用情况
清单 5. 获得磁盘使用情况统计信息 $ du -sk * 20 admin 1020 appleby 45828 applicants 13264 buy 11704 dev 11200 finan ...
- DSC配置
#配置Remote Desktop Services服务为 自启动,并运行 Configuration Myservice{ # A Configuration block can have zero ...
- ORA-12154 TNS无法解析指定的连接标识符
又是这个百无聊赖的问题,尽管问题芝麻点大,却让我们好找啊! 非常久没有安装oracle了.今天安装11g的时候,用PLSQL Developer连接时,就出现了这个俗不可耐的问题:ORA-12154 ...
- ORM之三:DbProvider与DbFactory
这里涉及到两个关键对象,一个是DbProvider,另一个就是DbFactory.粗略草图如下: 从上图可以看出,开放给消费者的接口就是DbProvider类,不过他主要继承IDbProvider ...
- CircularProgressBar
https://github.com/semicoder/CircularProgressBar https://github.com/amurani/MeterView