六一的部落格


关关难过关关过,前路漫漫亦灿灿。




说明

.clang-format

.gitignore

虚幻引擎编码规范

-
大括号 放在新行
缩进 使用空格

缩进、制表符和空格


缩进

indent

编写代码时,按下Tab键,会按制表符宽度留出空位,用以控制格式

使用制表符 Tab 和空格填充缩进

制表符的宽度可设置,不同平台制表符的宽度不一,视觉上,查看代码会有不习惯的感觉;可在本地设置使用空格,即用空格替换制表符


缩进使用空格

示例: 缩进使用空格, 制表符宽度 TabWidth 无效;缩进宽度 IndentWidth 生效, 一次缩进对应7个空格

1IndentWidth: '7'
2UseTab: 'Never'
3TabWidth: '9'

缩进使用制表符和空格

若缩进宽度小于制表符宽度, 使用空格填充缩进; 若缩进宽度大于等于制表符宽度, 使用制表符和空格填充缩进

示例: 一次缩进对应7个空格,不会被替换为制表符;两个缩进对应14个空格,会被替换为1个制表符加5个空格

1IndentWidth: '7'
2TabWidth: '9'
3UseTab: 'Always'

格式化代码规则

.clang-format

官方文档

YAML标记文件

作为项目的一部分,描述管理代码文件的统一格式

每行遵循格式:

key: value

设置受约束的开发语言

1Language: Cpp

如果项目中只一种开发语言,或者所有开发语言使用相同规范,可忽略该配置


通用样式


Google

一个制表符对应2个空格,大括号在行尾

1BasedOnStyle: Google

Microsoft

一个制表符对应4个空格,大括号在新行

1BasedOnStyle: Microsoft

制表符宽度

若缩进使用制表符,每6个空格替换一个制表符;当缩进宽度和制表符宽度不一致时,效果很糟糕

1TabWidth: '6'

缩进宽度

1IndentWidth: '4'

缩进样式

  • 空格
    1UseTab: Never
  • 制表符: 源文件中既有空格又有制表符
    1UseTab: Always

设置大括号位置

  • 行尾
    1BreakBeforeBraces: Attach
  • 新行
    1BreakBeforeBraces: Allman

显示时, 每行最大字符个数

为0时,按输入的实际情况显示

1ColumnLimit: '140'

向前缩进

控制访问说明符的缩进

1AccessModifierOffset: '-4'

头文件排序

1SortIncludes: false

括号换行时,参数的对齐方式

1AlignAfterOpenBracket: Align
  • 不对齐 DontAlign
    1someLongFunction(argument1,
    2    argument2);
  • 对齐 Align
    1someLongFunction(argument1,
    2                 argument2);

当块较短时,是否允许写在单行

1AllowShortBlocksOnASingleLine: false
  • 条件语句的执行部分为空,或只有一行语句时,可认为语句较短;为false则如下输出
    1while (true)
    2{
    3}
    4while (true)
    5{
    6  continue;
    7}

当If语句较短时, 是否允许写在单行

1AllowShortIfStatementsOnASingleLine: true
1if (true) return;

当函数语句较短时,是否允许写在单行

-
Inline 若函数体为空,允许;若函数在类内定义,允许
InlineOnly 只允许一种情况:函数在类内定义
Empty 只允许一种情况:函数体为空
1AllowShortFunctionsOnASingleLine: Inline

指针和引用的对齐方式

1PointerAlignment: Right
  • Right
    1int *a;
  • Left
    1int* a;

Git仓库同步

.gitignore

虚幻引擎提供模板

告诉Git,同步时忽略的文件和文件夹


命名约定

虚幻编辑器

虚幻引擎命名规范参考

虚幻编辑器
材质 Material M_
材质实例 Material Instance MI_
基于C++的蓝图类 Blueprint BP_
动画蓝图 Animation Blueprint ABP_
混合空间(1D) Blend Space BS_
动画剪辑 Animation Montage AM_

代码规范



说明

.clang-format

.gitignore

虚幻引擎编码规范

-
大括号 放在新行
缩进 使用空格

缩进、制表符和空格


缩进

indent

编写代码时,按下Tab键,会按制表符宽度留出空位,用以控制格式

使用制表符 Tab 和空格填充缩进

制表符的宽度可设置,不同平台制表符的宽度不一,视觉上,查看代码会有不习惯的感觉;可在本地设置使用空格,即用空格替换制表符


缩进使用空格

示例: 缩进使用空格, 制表符宽度 TabWidth 无效;缩进宽度 IndentWidth 生效, 一次缩进对应7个空格

1IndentWidth: '7'
2UseTab: 'Never'
3TabWidth: '9'

缩进使用制表符和空格

若缩进宽度小于制表符宽度, 使用空格填充缩进; 若缩进宽度大于等于制表符宽度, 使用制表符和空格填充缩进

示例: 一次缩进对应7个空格,不会被替换为制表符;两个缩进对应14个空格,会被替换为1个制表符加5个空格

1IndentWidth: '7'
2TabWidth: '9'
3UseTab: 'Always'

格式化代码规则

.clang-format

官方文档

YAML标记文件

作为项目的一部分,描述管理代码文件的统一格式

每行遵循格式:

key: value

设置受约束的开发语言

1Language: Cpp

如果项目中只一种开发语言,或者所有开发语言使用相同规范,可忽略该配置


通用样式


Google

一个制表符对应2个空格,大括号在行尾

1BasedOnStyle: Google

Microsoft

一个制表符对应4个空格,大括号在新行

1BasedOnStyle: Microsoft

制表符宽度

若缩进使用制表符,每6个空格替换一个制表符;当缩进宽度和制表符宽度不一致时,效果很糟糕

1TabWidth: '6'

缩进宽度

1IndentWidth: '4'

缩进样式

  • 空格
    1UseTab: Never
  • 制表符: 源文件中既有空格又有制表符
    1UseTab: Always

设置大括号位置

  • 行尾
    1BreakBeforeBraces: Attach
  • 新行
    1BreakBeforeBraces: Allman

显示时, 每行最大字符个数

为0时,按输入的实际情况显示

1ColumnLimit: '140'

向前缩进

控制访问说明符的缩进

1AccessModifierOffset: '-4'

头文件排序

1SortIncludes: false

括号换行时,参数的对齐方式

1AlignAfterOpenBracket: Align
  • 不对齐 DontAlign
    1someLongFunction(argument1,
    2    argument2);
  • 对齐 Align
    1someLongFunction(argument1,
    2                 argument2);

当块较短时,是否允许写在单行

1AllowShortBlocksOnASingleLine: false
  • 条件语句的执行部分为空,或只有一行语句时,可认为语句较短;为false则如下输出
    1while (true)
    2{
    3}
    4while (true)
    5{
    6  continue;
    7}

当If语句较短时, 是否允许写在单行

1AllowShortIfStatementsOnASingleLine: true
1if (true) return;

当函数语句较短时,是否允许写在单行

-
Inline 若函数体为空,允许;若函数在类内定义,允许
InlineOnly 只允许一种情况:函数在类内定义
Empty 只允许一种情况:函数体为空
1AllowShortFunctionsOnASingleLine: Inline

指针和引用的对齐方式

1PointerAlignment: Right
  • Right
    1int *a;
  • Left
    1int* a;

Git仓库同步

.gitignore

虚幻引擎提供模板

告诉Git,同步时忽略的文件和文件夹


命名约定

虚幻编辑器

虚幻引擎命名规范参考

虚幻编辑器
材质 Material M_
材质实例 Material Instance MI_
基于C++的蓝图类 Blueprint BP_
动画蓝图 Animation Blueprint ABP_
混合空间(1D) Blend Space BS_
动画剪辑 Animation Montage AM_