UE4基本前缀说明
命名规则
- 命名(如类型或变量)中的每个单词需大写首字母,单词间通常无下划线。例如:
Health
和UPrimitiveComponent
,而非lastMouseCoordinates
或delta_coordinates
。 - 类型名前缀需使用额外的大写字母,用于区分其和变量命名。例如:
FSkin
为类型名,而Skin
则是FSkin
的实例。
- 模板类的前缀为T(template)。
- 继承自
UObject
的类前缀为U(UE4 objects)。 - 继承自
AActor
的类前缀为A(Actor)。 - 继承自
SWidget
的类前缀为S(Slate)。 - 抽象界面类的前缀为I(Interface)。
- 列举的前缀为E(enum)。
- 布尔变量必须以b为前缀(bool)(例如
bPendingDestruction
或bHasFadedIn
)。 - 其他多数类均以F为前缀(Function),而部分子系统则以其他字母为前缀。
- 类型和变量的命名为名词。
- 方法名是动词,以描述方法的效果或未被方法影响的返回值。
- 所有返回布尔的函数应发起true/false的询问,如
IsVisible()
或ShouldClearBuffer()
。 - 若函数参数通过引用传递,同时该值会写入函数,建议以“Out”做为函数参数命名的前缀(非必需)。此操作将明确表明传入该参数的值将被函数替换。
- 若In或Out参数同样为布尔,以b作为In/Out的前缀,如
bOutResult
。
基础C++类型的可移植别名
bool
代表布尔值(不会假定布尔尺寸)。BOOL
不会进行编译。TCHAR
代表字符(不会假定TCHAR尺寸)。uint8
代表无符号字节(1字节)。int8
代表带符号字节(1字节)。uint16
代表无符号“短”字符(2字节)。int16
代表带符号“短”字符(2字节)。uint32
代表无符号整数(4字节)。int32
代表带符号整数(4字节)。uint64
代表无符号“四字”(8字节)。int64
代表带符号“四字”(8字节)。float
代表单精确浮点(4字节)。double
代表双精确浮点(8字节)。PTRINT
代表可能含有指针的整数(不会假定PTRINT尺寸)。
若代码中的整数宽度非重要,可使用C++的 int
和无符号 int
类型(不同的平台上的大小不同)。明确尺寸的类型必须以序列化或复制的格式进行使用。
常量正确性
常量即是文档也是编译器指令,因此应保证所有代码的常量正确。
其中包括:
- 若函数不修改参数,常量指针或引用将传递函数参数,
- 若方法不修改对象,将方法标记为常量,。
- 若循环不修改容器,则在容器上使用常量迭代。