关闭

编码风格约束

标签: C++
179人阅读 评论(0) 收藏 举报
分类:
1. 命名基本原则
    1.1. 类
        采用匈牙利命名法,首字母以C开头的命名方式.如:
        class CProtocolHeader
        {
        };
    1.2. 结构体
        原则上只能够对纯的数据结构采用struct关键字进行定义(接口采用interface宏),而对于与C语言保持
        兼容的数据结构在采用struct定义时,其成员变量可以不使用m_风格,而对于结构类型的名称必须使用S
        作为前缀,如下:
        struct SProtocolHeader
        {
            char bitmap[4];
            int  len;
        };
    
    1.3. 枚举量
        采用匈牙利命名法,首字母以E开头的命名方式,如:
        enum EProtocol
        { 
            EPROTOCOL_SEND = 0, 
            EPROTOCOL_RECV = 1 
        };
    
    1.4. 变量
        成员变量:采用首字母小写,m_作为前缀的书写方式。如:bool m_isClicked;
        全局变量:采用首字母小写,g_作为前缀的书写方式.如:bool g_isClicked;
        静态变量:采用首字母小写,s_作为前缀的书写方式.如:bool s_isClicked;
        临时变量:采用首字母小写的书写方式,如:bool isClicked;
            
    1.5. 常量,宏名称
        采用全部字母大写,采用下划线风格命名。
        a) 宏名称:包括宏常量、宏函数;
        b) 常量名:如:static const int MAX_LEN = 1000;
     
    1.6. 函数
        对函数、方法、类成员函数进行命名时,应该采用动词+宾语的方式进行命名,并且第一个单词首字母必
        须小写,不允许采用下划线风格。如:bool getNext( int col );
        
2. 关于换行问题
   对于有一些组合语句太长(如:if条件,while条件等等)在换行时必须遵循以逻辑独立为单位的子语句进行换
行,不能够仅仅依据某一行的长度是否大于屏幕宽度和某一固定值来进行视觉上的换行处理,如下:
    if ( A < B && C < D ) 假如太长
    应该如下:
        if ( A < B &&
             C < D )
    不能如下:
        if ( A <
             B &&
             C <
             D )
                 
3. 语句嵌套问题
   如果因为判断语句(if)导致程序结构出现太深层次的嵌套(超过三层)可以考虑采用判断条件的非来减少嵌
套层次,如下:
    if ( 成立 )
    {
        if ( 成立 )
        {
            if ( 成立 )
            {
            }
        }
    }
    可写为:
    if ( 不成立 ) return false;
    if ( 不成立 ) return false;
    if ( 不成立 ) return false;
        ...    ...    ...


4. 文件名宏问题
   对于应用于头文件中的用于避免重复包含的文件名宏必须采用如下形式:
        全大写文件名_全大写文件扩展名_
   如:
        文件名:BasicHelper.hpp
        宏:    BASICHELPER_HPP_


5. 头文件名扩展名
   对于只能应用于C++的头文件应该如此命名:    XXX.hpp
   对于可以应用于C语言的头文件名应该如此命名:XXX.h


6. 模板类定义
   一致要求在定义模板类时应该采用分离模式进行定义,对于模板类的声明头文件采用xxx.hpp的形式,其中不包
任何的实现代码,并将所有的实现代码统一存放于一个名称为xxx.inl的文件中,并且在xxx.hpp中通过
#include "xxx.inl"的形式在尾部包含该实现文件到头文件中。


7. 注释风格问题
   注释风格必须严格按照doxygen所定义的javadoc风格进行编写,不得任意修改注释形式和样式。
    
8. 接口的编写模式
   所有的接口必须以关键字interface开头,并且对于暴露给其他模块使用的接口必须添加导出符号XXX_PUBLIC,
析构函数必须采用虚析构函数,如下所示:
    interface XXX_PUBLIC IDbAgent
    {
        virtual bool get() = 0;
    public:
        IDbAgent() {}
        virtual ~IDbAgent() {}
    };    


9. 名称选词规则
   对于书写代码过程中需要进行命名的标识符(如:变量名、类名、函数名、常量名等),在选择英文单词作为
名称时应尽量采用完整英文单词,对于已经标准化或行业化的缩略词和合成词可以考虑直接采用,书写时采用与完
整英文单词相同的书写规则,如下所示:
   BasicHelper、MemoryManager、Sdh、Mstp、Mib、Eth、Rimi、Rpr、Ge、Fe、Lan、
   Wan、Perf、Stats、No、Num、Idx、Cmnd、Wdm、Ntp、Ftp、Http、Telnet、Samba、
   Linux、Solaris、Win32、Os、Mgr、Ref、Doc、Src、Inc、Ut、It、St、Rt、Cpp、
   Vc、Vcg、Tu、Tug、Au、Aug、Oc、Lcas、Vcat、Stm、Tmn、Cc、Cxx、Nms、Nmf、
   Asn、Snmp、Ip、Addr、Tcp、Udp、Mcast、Bcast、Ucast、Sys、Util、X86、X64、
   Cui、Gui、Gnu


10 在*.hpp *.cpp文件尾部需要有一个空行,否则在linux下编译时会给出警告.
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5022次
    • 积分:122
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:10篇
    • 译文:1篇
    • 评论:0条
    文章分类