命名规范以及注意事项仅作参考:

变量名要能够标识出类型,比如 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 列表的功能,其中包含下载任意文件的功能,要抽出作为通用的代码,类似的一个大功能包含一堆小功能的,都可以抽象出来的都要单独写成可以随意调用的函数或者对象,不能够依赖调用顺序,最大限度地降低依赖。