官方网址: http://gforge.osdn.net.cn/projects/xowidgets
本指南面向 xoWidgets 项目代码编写人员。包括两部分:
(1) 普通的C++可移植规则;
(2) xoWidgets 规则。
1 普通的C++可移植规则
(1) 不使用新的或还未被广泛支持的C++特性:
C++模板、异常、命名空间、RTTI、STL、嵌套类、新的逻辑操作符;
(2) 不在for () 语句中定义变量;
(3) 全部代码使用C风格注释(/**)
(4) 在带析构函数的类中至少定义一个构造函数;
(5) 代码块的临时注释使用预处理语句(#if 0),而不是注释(/**);
(6) 避免重载虚函数(virtual);
(7) 使用.h/.cpp作为C++源代码的扩展名;
(8) #include包含的目录文件中不使用反斜线(/);
(9) 所有文件代码的末尾均有新行;
(10) 变量前缀:静态(s_)、全局(g_)、成员(m_)、静态全局(sg_)、静态成员(sm_);
(11) 无参数的函数不使用void;
2 xoWidgets 规则
(1) 所有文件包含标准的文件头注释;
(2) 所有头文件(.h)包含预处理宏(_FOOBAR_H__);
(3) 代码缩排使用四个空格,而不是Tab;
(4) 类申明中的成员按固定的顺序排列(public、protected、private):
类型定义:enum、[typedef] struct
变量定义:[static] const、普通变量
属性访问:Set/Get
函数定义:构造函数、普通函数、虚函数
事件处理:OnFooBar
(5) 为public符号使用XO或xo前缀(宏使用XO_、其余使用xo;特殊的宏使用XO);
(6) 常量使用enum定义、而不是#define或static const int;
(7) 变量定义语句的类型和变量之间仅使用一个空格;
(8) 变量命名:
宏使用FOO_BAR;
函数参数使用camelCasing的匈牙利简化法;
其余地方使用PascalCasing;
其余的规则,请参照《GNU Code Standards》。