命名规范以及注意事项仅作参考:
变量名要能够标识出类型,比如 b 开头是 bool,i 默认是 int32,特殊位长的需要特殊命名,无符号类型要加 u;
函数库统一使用 Flib 开头
Delegate 命名时要能够标识出其类型,可以使用缩写,Dy 代表动态代理,Multi 代表多播代理,Dlg 代表是代理;
游戏框架内的 Subsystem 类必须要以 Subsys
开头,并且能够知道这个类是做什么的,比如 SubsysGameUpdater
和其子类 SubsysHTTPGameUpdater
;
函数的命名要能够根据名字知道它要做什么事情、所有获取的方法统一使用 Get,进行检测的可以使用 TryGet 命名;
函数传入的参数必须以 In 开头,返回的参数必须以 Out 开头(引用);
函数有可能会执行失败的要返回 bool 或者错误码(返回值必须要有意义,不能逻辑中什么都不判断直接在函数末尾写 return true
)
蓝图的类统一使用 BP_
开头
UI 的类统一使用 UMG_
开头;
代码中的 namespace 要以 NS
开头;
在 C++ 里继承自 UserWidget 的类命名以 UW
开头,以继承关系为头缩写,后缀以 UI
结尾;
插件和工程中的蓝图不可以有名字重复;
namespace 要打全(如引用 protobuf 生成的代码)
不要在 Module 的 build.cs 中使用 PublicAdditionalLibraries
添加另一个 Module 中的链接库文件
代码文件的编码使用 UTF8,不要使用 GBK,GBK 编码在注释中包含中文时,经过 UHT 生成的反射信息会产生三字符序列的编译问题
插件需要添加平台的 whitelist
插件依赖了外部的插件,需要在插件中添加插件依赖
写真正的业务代码之前第一步要设计接口作为中间层,设计接口之后不要实现,必须先提交接口 (可以没有任何逻辑,只是打印 log 都可以),可以供其他人使用,避免依赖工作间的等待。
保持接口的稳定和可扩展,接口不能随意变动,命名应该简洁直观,接收参数应该齐全(所有依赖外部的参数都要传递),保持接口的无状态。
所有写的业务依赖的工具函数要抽出作为通用的工具,比如之前写的下载 Pak 列表的功能,其中包含下载任意文件的功能,要抽出作为通用的代码,类似的一个大功能包含一堆小功能的,都可以抽象出来的都要单独写成可以随意调用的函数或者对象,不能够依赖调用顺序,最大限度地降低依赖。