• C++的一些编程规范(基于google)


    1.所有头文件都应该使用#define 防止头文件被多重包含,命名格式可以参考<PROJECT>_<PATH>_<FILE>_H

    2.使用前置声明尽量减少.h文件中#include的数量,导致不必要的重新编译

       详解:http://blog.csdn.net/justkong/article/details/9388733

    3.函数参数:输入参数在前,输出参数在后。输入参数一般传值或常数引用,输出参数或输入输出参数为非常数指针。

    4. .cpp头文件包含顺序

      同名头文件

      C系统文件

      C++系统文件

      其它库头文件

      本项目内其它头文件

    5.命名空间

      (1)分为有名和无名的命名空间

      (2)不能在命名空间的定义中声明子命名空间,不能在命名空间外使用"命名空间::子命名空间{}"的形式为子命名空间添加新成员。

                a. namespace A

                   {

                           namespace B; //error

                    }

                 b. namespaceA{}

                     A::B{}; //error

                     namespaceA{

                     namespace B{} //right

                     }

       (3)using指令和using声明

                 using指令:using namespace A;  //整个命名空间中的所有成员都可直接使用

                 using声明:using A::成员名  //只声明特定的成员

        (4)一般来说,使用using声明会更安全。因为,using声明只导入指定的名称,如果该名称与局部名称发生冲突,编译器会报错。而using指令导入整个命名空间中的所有成员的名称,包括那些可能根本用不到的名称,如果其中有名称与局部名称发生冲突,则编译器并不会发出任何警告信息,而只是用局部名去自动覆盖命名空间中的同名成员。特别是命名空间的开放性,使得一个命名空间的成员,可能分散在多个地方,程序员难以准确知道,别人到底为该命名空间添加了哪些名称。

         (5)可以为命名空间定义别名

                   namespace 别名 = 命名空间名;  //方便使用

    6.局部变量

       提倡在尽可能小的作用域中声明变量,离第一次使用越近越好,在声明变量时将其初始化

    7.类中成员声明次序

      (1)public,protected,private

      (2)typedefs和enums

                常量

                构造函数

                析构函数

                成员函数

                数据成员

    8.使用C++的类型转换代替C语言的类型转换

      (1)static_cast:和C风格转换相似可做值的强制转换,或者指针的子类到父类的明确的向上转换

      (2)const_cast:移除const属性

      (3)reinterpret_cast:指针类型和整形,或者其他指针间不安全的转换,仅在你对你所做的一切了然于心时使用

      (4)dynamic_cast:运行时类型检查,指针的父类到子类的转换

      详见http://blog.csdn.net/justkong/article/details/8044662

    9.使用前置自增代替后置自增,后置自增要多一次拷贝

    10.尽可能多的使用const

  • 相关阅读:
    多线程篇七:通过Callable和Future获取线程池中单个务完成后的结果
    多线程篇六:线程池
    微服务学习和认识
    多线程篇五:多个线程访问共享对象和数据的方式
    多线程篇四:ThreadLocal实现线程范围内变量共享
    多线程篇三:线程同步
    多线程篇二:定时任务
    多线程篇一:传统线程实现方式
    Jms学习篇二:ActiveMQ
    04-运算符
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3202948.html
Copyright © 2020-2023  润新知