zoukankan      html  css  js  c++  java
  • ###Maintainable C++

    点击查看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{}
    }
  • 相关阅读:
    微服务架构技术栈选型手册(万字长文)
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    MFC对话框中使用CHtmlEditCtrl
    ATL开发 ActiveX控件的 inf文件模板
    ActiveX: 如何用.inf和.ocx文件生成cab文件
    Xslt 1.0中使用Array
    如何分隔两个base64字符串?
    An attempt was made to load a program with an incorrect format
    JQuery 公网 CDN
  • 原文地址:https://www.cnblogs.com/gr-nick/p/4000863.html
Copyright © 2011-2022 走看看