点击查看Evernote原文

#@author:       gr
#@date: 2014-08-15
#@email: forgerui@gmail.com

记录一些标准规范。让自己的编码更可读,更可维护。(代码风格尽量统一)

一、Contents

1. tab or spaces

尽量使用spaces取代tabtab键可能在不同编辑器缩进不同,导致混乱。把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++的更多相关文章

  1. Building Maintainable Software-java篇之Separate Concerns in Modules

    Building Maintainable Software-java篇之Separate Concerns in Modules   In a system that is both complex ...

  2. JavaScript Patterns 2.1 Writing Maintainable Code

    Revisiting the code after some time has passed requires: • Time to relearn and understand the proble ...

  3. Building Maintainable Software-java篇之Couple Architecture Components Loosely

    Building Maintainable Software-java篇之Couple Architecture Components Loosely There are two ways of co ...

  4. 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 ...

  5. [转][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 ...

  6. Maintainable HashCode and Equals Using Apache Commons

    Java hashCode and equals methods can be tricky to implement correctly. Fortunately, all majors IDEs ...

  7. Maintainable JavaScript(编写可维护的JavaScript) PART I Style Guidelines

    “Programs are meant to be read by humans and only incidentally( 顺便:偶然地:附带地) for computers to execute ...

  8. JavaScript Maintainable

    1. Avoid conflict with Native Variable namespace

  9. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

随机推荐

  1. php中带mb的字符串处理函数

    int strlen ( string $string ) int mb_strlen ( string $str [, string $encoding ] ) encoding参数为字符编码.如果 ...

  2. DOM 的选择器 API

    在刚开始的时候,我们只能用 getElementById,getElementsByClassName,getElementsByTagName 这几个 DOM 方法查找 DOM 树中的元素.后来,在 ...

  3. 中国大概能用的NTPserver地址

    133.100.11.8 prefer210.72.145.44203.117.180.36131.107.1.10time.asia.apple.com64.236.96.53130.149.17. ...

  4. 教你如何选择Android游戏引擎

    我们进行Android游戏开发时选择游戏引擎是必须的,但是该如何选择呢?哪个Android游戏引擎更加适合自己呢?本文就提供了三个游戏引擎的对比说明,阐述了它们各自的特点,为大家选择引擎提供了参照. ...

  5. iOS开发——OC篇&协议篇/NSCoder/NSCoding/NSCoping

    协议篇/NSCoder/NSCoding/NSCoping 协议声明类需要实现的的方法,为不同的类提供公用方法,一个类可以有多个协议,但只能有一个父类,即单继承.它类似java中的接口. 正式协议(f ...

  6. C++中如何修改const变量

      一.结论 声明:不同于C语言的const变量修改问题(可以通过指针间接修改const变量的值),这里只讨论C++ 里的const. C++ const 修饰符,表示常量,即如果以后保证不会修改则声 ...

  7. jQuery执行请求demo

    Ajax教程地址 4.3.2 执行GET请求 使用jQuery来执行GET请求有多种可选的方法.最简单的方法是使用$.get(),其参数是一个URL和一个回调函数:该回调函数有两个参数:一个是从服务器 ...

  8. java_jdbc_batch处理_主键id获取

    //create1 速度较慢,create2较快,但是要根据数据库不同来决定 //ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_ ...

  9. Linux学习之路:shell变量(二)环境变量

    1.env (environment 的缩写)和export显示所有环境变量 2. 环境变量说明 环境变量 意义 HOME 用户主文件夹相当于“~” SHELL Linux默认为/bin/bash H ...

  10. 关于SWT中的Label类和Text类

    Label类的继承关系图 Label是SWT中最简单的界面组件,给出他的一个实例如下: public class Label1 { public static void main(String[] a ...