点击查看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. spring框架中一个跟String的trim方法一样的方法

    @Test public void testTrimWhitespace() throws Exception { assertEquals(null, StringUtils.trimWhitesp ...

  2. 线段树—Lazy_Tag

    转载LINK:LAZY_TAG 先看一个具体问题吧 PKU 3468 http://poj.org/problem?id=3468 题意很清楚 1 ≤ N,Q ≤ 100000. "C a  ...

  3. Activity详解

    Activity是android应用的重要组成单元之一(另外3个是Service,BroadcastReceiver和ContentProvider).实际应用包含了多个Activity,不同的Act ...

  4. Idea的Git使用

    在使用Git来pull和push代码的时候会发生冲突的情况,如果处理不当则会出现无法pull和push代码的情况.所以这个是十分有必要注意的. 那么我来说几句自己的总结吧: 1.先看下idea的Git ...

  5. 2016 Mac OS 10.11 CocoaPods的安装问题

    CocoaPods的安装问题: 1.首先用淘宝的Ruby镜像来访问CocoaPods,打开终端输入以下命令: (1)gem sources --remove  https://rubygems.org ...

  6. 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. 正则表达式30分钟入门教程<转载>

    来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial. 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了 ...

  8. Codeforces Round #268 (Div. 1) B. Two Sets 暴力

    B. Two Sets Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/468/problem/B ...

  9. java_spring_List,Map,Properties,Set注入与遍历

    package com.dao.bean.www; import java.util.List; import java.util.Map; import java.util.Properties; ...

  10. Java基础知识强化之IO流笔记67:Properties的特殊功能使用

    1. Properties的特殊功能 public Object setProperty(String key,String value):添加元素 public String getProperty ...