枚举命名规范_UE4 C++基础教程 - 编码规范

e6b7caa2f57b397f79f4153d583c275c.png

为什么要学习编码规范?

良好的编码规范不仅利于项目维护,也增加了代码辨识度。使我们在阅读代码时能够更加清晰的理解代码意图。维护编码规范不是一件机械化的工作,它更像是一门艺术,让我们在有限的规范内发挥自己的创造力。除此之外,还有如下几个原因:

  • 软件生命周期中80%的时间皆需要维护。
  • 原开发者几乎不会对软件进行终身维护。
  • 代码规则可提高软件可读性,让工程师更加快速透彻地理解新代码。
  • 如决定向模组社区开发者公开源代码,则源代码需要易于理解。
  • 交叉编译器兼容性实际上需要此类规则。

详细的编码规范可以参考UE4的官方文档[1],这里我们只摘录其中有利于初学者阅读代码的部分。

UE4命名规范

Pascal命名法

每个单词首字母大写,如 HealthUPrimitiveComponent 。变量、方法和类的命名应清楚、明了且进行描述。命名的范围越大,一个良好的描述性命名就越重要。避免过度缩写。所有变量应逐个声明,以便对变量的含义提供注释。其同样被JavaDocs格式需要。变量前可使用多行或单行注释,空白行为分组变量可选使用。

类型前缀

类型名称前有一个额外的大写字母用于区分不同的类型和普通的变量名。如 FSkin 是个类型名,Skin 则是 FSkin 的实例。下面是各种前缀以及其含义:

  • T 表示模板类
  • U 表示类继承自 UObject
  • A 表示类继承自 AActor
  • S 表示类继承自 SWidget
  • I 表示抽象接口类
  • E 表示枚举
  • b 表示布尔值
  • F 表示其他不满足上述规则的类

样例

float TeaWeight;
int32 TeaCount;
bool bDoesTeaStink;
FName TeaName;
FString TeaFriendlyName;
UClass* TeaClass;
USoundCue* TeaSound;
UTexture* TeaTexture;

其他

typedef 应该以与其类型相符的字母为前缀,若为结构体,则使用F;若为UObject则使用U,以此类推。此外,使用模板实例化的类不再是模板,也应该加上相应前缀,如:

typedef TArray<FMytype> FArrayOfMyTypes;

类型和变量的命名为名词。

方法名是动词,用于描述方法的效果或者无副作用的返回值。

返回布尔的函数应发起true/false的询问,如:

IsVisible();
ShouldClearBuffer();

若函数参数通过引用传递,同时该值会写入函数,建议以“Out”做为函数参数命名的前缀(非必需)。此操作将明确表明传入该参数的值将被函数替换。

若In或Out参数同样为布尔,以b作为In/Out的前缀,如 bOutResult

返回值的函数应描述返回的值.命名应说明函数将返回的值。此规则对布尔函数极为重要。请参考以下两个范例方法:

// True的意义是什么?
bool CheckTea(FTea Tea);// 命名明确说明茶是新鲜的
bool IsTeaFresh(FTea Tea);

参考

  1. ^Coding Standard https://docs.unrealengine.com/en-US/Programming/Development/CodingStandard/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cocos2d-x之Log输出机制

| 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 在cocos2d-x中&#xff0c;我们使用log这个函数进行输出&#xff0c;log可以输出很多参数&#xff0c;它的使用方式就和使用c语言中的printf的使用方式差不多。log其实是一个跨平台的日志输出的…

最佳单例模式

initialization on demand holder 模式分析 单例模式要求在应用运行的过程中&#xff0c;只有一个类的实例存在。因此&#xff0c;要确保创建过程是线程安全的&#xff0c;同时要兼顾性能。目前了解到做得比较好的&#xff0c;就是这种initialization on demand holder模式&am…

python接口测试jason_Python 接口测试之Json数据文件操作

引言 前面说过接口测试就是数据的测试&#xff0c;在测试之前&#xff0c;需要准备好测试数据&#xff0c;而测试数据可以用数据库、excel、txt和csv方式&#xff0c;当然还有一种方式&#xff0c;那就是使用json文件来储存测试数据。常用的方式就是这些。 设计思路 python读取…

城市轮廓线求解

问题描述 每一个建筑物用一个三元组表示(L, H, R), 表示左边界, 高度和右边界,轮廓线用X,Y,X,Y…这样的交替式表示,给N个建筑&#xff0c;求轮廓线。 总体思路 首先&#xff0c;要将建筑物离散成点或线&#xff0c;方便运算。将建筑物表示成&#xff08;L,H&#xff09;,(R,…

wpf的listbox循环数据滚动_滚动版 CentOS Stream 和 Fedora 的关系

如果 CentOS 现在位于 RHEL 的上游&#xff0c;那么 Fedora 会发生什么&#xff1f;那不是 Fedora 在 Red Hat 生态系统中的角色吗&#xff1f;-- Matthew Miller&#xff08;作者&#xff09;一封来自 Fedora 项目负责人办公室的信件&#xff1a;&#xff08;LCTT 译注&#x…

位运算的妙用

位运算所有语言里面都有位运算&#xff0c;&&#xff0c;|,^,~,<<,>>,>>>&#xff0c;但是其他语言不清楚&#xff0c;前端估计许多人直接一扫而过&#xff0c;甚至把这玩意和逻辑或与混淆&#xff0c;甚至有的不认识<<,>>>,问这什么意…

AJAX中的跨域问题:什么是跨域?如何解决跨域问题?

域不一样的&#xff0c;即为跨域&#xff0c;包括&#xff08;协议&#xff0c;域名&#xff0c;端口号&#xff09; 1. 指定允许其他域名访问 header(Access-Control-Allow-Origin:*); 2.使用jsonp转载于:https://www.cnblogs.com/luckyXcc/p/5805909.html

求无序序列每个元素最接近的值

1、问题描述 给一个n个元素的线性表A&#xff0c;对于每个数Ai&#xff0c;找到它之前的数中&#xff0c;和它最接近的数。 即对于每个i&#xff0c;求 Ci min{ |Ai -Aj | | 1< j < i} 1.2算法分析 有两种思路可以解决上诉问题&#xff1a; &#xff08;1&#xff0…

python把list转成字典_python中将list转为dict

最近在项目中经常遇到将list转为dict形式&#xff0c;之前都只会用for循环&#xff0c;取出list中的每个值&#xff0c;update到dict中。 示例1 scrabble_scores [(1, "E A O I N R T L S U"), (2, "D G"), (3, "B C M P"), (4, "F H V W …

maven引入springframework的猫腻

看官网的quickstart&#xff0c;以为maven只要将quickstart里的配置复制到项目里就好了&#xff0c;但是在项目中使用jdbc和事物时&#xff0c;都提示找不到相关的类&#xff0c;才知道原来官网文档还有猫腻。 maven引入spring框架 project下框架有点多&#xff0c;点spring …

BAT批量处理 命令

第一章 批处理基础第一节 常用批处理内部命令简介批处理定义&#xff1a;顾名思义&#xff0c;批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件&#xff0c;其扩展名为BAT或者CMD。这些命令统称批处理命令。小知识&#xff1a;可以在键盘上按下CtrlC组合键来强…

bigdecimal 小于等于0_半场0-0比分的比赛,你需要注意这些

大家好&#xff0c;我是师弟&#xff0c;今天给大家带来有关于半场0-0比赛的分析。前段时间有朋友向我吐槽道&#xff1a;“最近买半场0-0的比赛输惨了”&#xff0c;经过询问了解到他是专挑半场0-0的比赛在中场的时候买入大1.5&#xff0c;没想到输多赢少。而他的想法可能也代…

Spring JdbcTemplate实例

简介 Spring JdbcTemplate类是Spring提供的简化数据库操作的一个类&#xff0c;这个类使用了模板方法模式&#xff0c;可以减少一些重复代码。这里主要演示一下 JdbcTemplate 的使用。 完整的代码看这里&#xff1a;spring_jdbc_01 创建数据库 第一步是创建数据库。下面的S…

JS-为金额添加千分位逗号分割符

前言&#xff1a;这个功能在前端页面中使用的还是比较多的&#xff0c;正好我们的项目中也有使用此功能&#xff0c;不过YY同学写的代码不像个方法的样子&#xff0c;一个入口中间又插了几道子&#xff0c;所 以&#xff0c;我写了下面这个方法&#xff0c;经过测试…

将chart放入panel中出现滚动条_聊天场景在web前端开发中的体验与优化

在日常工作中&#xff0c;如下图的聊天场景是不是很熟悉&#xff0c;没错就是我们再熟悉不过的 QQ 和微信&#xff0c;一个正常的聊天界面大致上是长这个样子的&#xff1a;这种聊天窗口的消息流有两个明显的特点&#xff1a;最新的消息和滚动条初始位置需要在列表的最底部下拉…

一个(伪)MaterialDesign风格的博客园皮肤

皮肤长什么样&#xff0c;不用我说&#xff0c;相信各位点进来的看官都能看得一清二楚。 有关其他细节呢&#xff0c;也欢迎各位在我博客里逛逛&#xff0c;帮忙挑挑刺&#xff0c;提提建议。 由于水平有限&#xff0c;暂没能用CSS处理博客园的代码高亮字体&#xff0c;实在是有…

spring JdbcTemplate数据库查询实例

使用JdbcTemplate查询数据库的例子 配置等可以看前一篇文章&#xff1a; Spring JdbcTemplate实例 创建数据库 可以使用下面的SQL create table A( id INT (255) not null, primary key (id) ); 创建实体类 新建一个AEntity类用于映射表A的一行&#xff1a; Component p…

git checkout 单个文件_IntelliJ IDEA下的使用 Git

作者| JKYO链接 | cnblogs.com/pejsidney/p/9199115.html1、Git 简介Git是目前流行的分布式版本管理系统。它拥有两套版本库&#xff0c;本地库和远程库&#xff0c;在不进行合并和删除之类的操作时这两套版本库互不影响。也因此其近乎所有的操作都是本地执行&#xff0c;所以在…

小甲鱼c语言课后作业_知识,就是力量——山财“学习小课堂”助你蓄力

编者按少年&#xff0c;你渴望 知识的力量 吗&#xff1f;我们有山财最全的学习秘籍&#xff0c;只待你的耐心翻阅与潜心修炼&#xff01;接下来&#xff0c;就让我们一起查收学习干货~内容摘要本系列推送分为【悦览篇】【干货篇】【招募篇】三大模块。【悦览篇】编者会为大家推…

初步认识spring mvc

spring mvc 01Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;即使用了MVC架构模式的思想&#xff0c;将web层进行职责解耦&#xff0c;基于请求驱动指的就是使用请求-响应模型&#xff0c;框架的目的就是帮助我们简化开发&…