编码风格约束

转载 2015年11月17日 19:16:00
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下编译时会给出警告.

相关文章推荐

VC++项目编码约束

  • 2008年12月11日 04:21
  • 708KB
  • 下载

使用编码添加约束的规则

对于两个同层级View之间的约束关系,添加到他们的父View上。对于两个不同层级View之间的约束关系,添加到他们最近的共同的父View上对于有层次关系的两个View之间的约束关系,添加到层次较高的父...

web day16 数据库 完整性约束,mySQL编码问题,备份与恢复,多表查询

约束 * 约束是添加在列上的,用来约束列的!   1. 主键约束(唯一标识)  ****非空***  ****唯一***  ****被引用****(学习外键时)     * 当表的某一列被指定为主键后...

Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格

Python笔记——基本语法 标识符、数据类型、变量、运算符及表达式/编码风格...
  • wklken
  • wklken
  • 2011年04月09日 10:17
  • 14915

python编码风格pep8

python:pep8 目录 PEP8中文翻译 什么是PEP PEP8 简介 愚蠢的一致性就像没有脑子的妖怪 代码布局 表达式与语句...

Linux C语言编码风格

最近看了《Linux C编程一站式学习》觉得编码风格还是挺重要的,在学习的过程中在博客中做下相关总结,应该会对自己的编码风格印象深刻些,希望自己以后都能遵守这样的好的编码风格。原文地址:http://...

Linux下C语言编码的风格

Linux下C语言编码的风格 Linux 作为 GNU家族的一员,其源代码数以万计,而在阅读这些源代码时我们会发现, 不同的源代码的美观程度和编程风格都不尽相同。 例如下面的glibc 代码...

基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用!

基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用! 源代码下载地址:http://www.zuidaima...

EXTjs 4 高效率编码风格

切勿使用“new”关键字:在Ext JS中,使用“new”关键字来创建一个组件或类的实例是一种错误的做法,因为这没有遵循组件的生命周期。应该使用Ext.create方法来创建对象,例如: [...

来自尼古拉斯的编码风格

千里之行始于足下,学好如何编程得先慢慢培养编码风格的好习惯。 就像我们小学时语文老师经常叫我们练字一般,我们不必懂得写的字是什么意思,而注重一笔一划的书写。写的一手漂亮的字会为你的人格增添魅力...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编码风格约束
举报原因:
原因补充:

(最多只允许输入30个字)