为什么要学习编码规范?

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

  • 软件生命周期中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

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

  1. wav pcm数据是带符号的吗_UE4 C++基础教程 - 基础数据结构

    简介 UE4是跨平台的引擎,为了尽可能减少跨平台数据大小不一致导致的问题,所以自定义了基本数据类型.使用 typedef 将其定义为我们常用的数据类型,并通过编译时检测[1]保证数据大小在各平台的一致 ...

  2. pep8 python 编码规范_实用的python编码规范

    编码规范在程序开发中是一项很重要要求,良好的编码规范对程序的可读性.代码的可维护性都有很大的提高,从而提高开发效率.下面总结了python中一些实用的开发规范,供大家借鉴和参考. 1.每行不超过80个 ...

  3. python基础编码规范_Python基础:编码规范(4)

    1.命名规范 Python中不同代码元素采用不同命名方式: ◊ 包名:全部小写字母,中间可以由点分隔开.作为命名空间,包名需具有唯一性. ◊ 模块名:全部小写字母,如果是多个单词构成,使用下划线分隔. ...

  4. ue4 函数和宏区别_UE4 C++基础教程 - Hello World

    入门 学习UE4最好的方式就是编写代码实际调试.方便快捷的调试可以加快我们学习的进度.尽管这个过程很简单,但是对于初学者来说,它仍然可能成为一大障碍,因为要达到这个目的,我们必须能够正确部署UE4 C ...

  5. java通用编码规范考试_《java编码规范考试题答案》.doc

    一.单选题 1. 如下关于集合类的描述错误的是 B A. 含有集合意义的属性命名,尽量包含其复数的意义 B. 集合中的数据不需要释放,垃圾回收器会自动回收 C. 集合必须指定模板类型 D. 使用集合类 ...

  6. python编码规范腾讯_Python PEP8 编码规范中文版

    # Naming Conventions 命名规范 Python 库的命名规范很乱,从来没能做到完全一致.但是目前有一些推荐的命名标准.新的模块和包(包括第三方框架)应该用这套标准,但当一个已有库采用 ...

  7. 计算机操作与规范,计算机操作基础与汉字规范码拼音拼形训练

    计算机操作基础 第一单元 计算机基本操作 第一课 认识计算机 第二课 Windows95概述 第三课 纸牌游戏 第四课 Windows95窗口操作 第五课 画图软件的简单使用(1) 第六课 画图软件的 ...

  8. java编码规范右大括号换行_java编码规范摘选

    1.方法注释模板; @description,@param,@author 可选: @return,@exception 2. 行尾注释,如循环结束,模块类结束行 3. 文件开头注释 项目名称proj ...

  9. Java 编码规范1(编程规约-命名风格)

    编程规约-命名风格 其它相关文章 Java 编码规范1(编程规约-命名风格) Java 编码规范2(编程规约-常量定义) Java 编码规范3(编程规约-代码格式) Java 编码规范4(编程规约-O ...

最新文章

  1. 家中电脑无法共享,联通域名解析劫持竟是罪魁
  2. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)
  3. 手机壳鸿蒙,手机壳黑榜发布 真相太惊人!
  4. x264_param_t结构体参数分析
  5. 消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...
  6. 生产者消费者之阻塞队列版本
  7. macOS Mojave 升级到macOS Monterey
  8. osm数据导入mysql_OSM(OpenStreetMap) poi、路网 数据导入 PostgreSQL
  9. SQL2008安装后激活方式以及提示评估期已过解决方法
  10. 图解Raft:应该是最容易理解的分布式一致性算法
  11. 表单元素的外观改变(webkit and IE10)
  12. namenode双机热备之操作实践
  13. matlab leslie模型,【2017年整理】leslie人口增长模型模型.doc
  14. vs2010开发activex(MFC)控件/ie插件(一)
  15. (分享)视频压缩Free Video Compressor 汉化版/中文版【全网唯一】
  16. mysql备份命令_mysql命令行备份方法
  17. 将编译器的代码快速转存为图片
  18. 2021年中国理财产品行业之新发行银行理财产品概览,中国银行发行2359只,位居榜首「图」
  19. 笔记本通过网线给台式机分享网络
  20. 优化机场值机体验之护照阅读器

热门文章

  1. Android setColor
  2. QC与IE8 、WINDOWS 7 兼容问题的解决方案
  3. mongo php update 写法,mongodb update 字符 操作
  4. 创建接口匿名实现类的对象的四种方法
  5. Module build failed (from ./node_modules/sass-loader/lib/loader.js):
  6. 搭建jenkins+gitlab+tomcat+maven步骤
  7. MySQL8权限,角色
  8. 商务计算机的购置方案,电子采购方案的实施.ppt
  9. mysql5.6定时备份_Mysql自动备份
  10. 【C语言进阶深度学习记录】三十六 程序与进程的区别(程序的内存布局)