您想找什么?
Hero background image
Unity 中 C# 脚本的格式化最佳实践

虽然可能没有一种正确的方式来格式化你的 C# 代码,但在你的团队中达成一致的风格可以产生更清晰、更易读和更具可扩展性的代码库。本页提供了在创建您自己的样式指南时需要牢记的有关类、方法和注释的提示和主要注意事项。

笔记:此处分享的建议基于 Microsoft 提供的建议。最好的代码风格指南规则是适合您的团队需求的规则。

您可以 在此处 找到代码样式指南示例或下载完整的电子书, 创建 C# 样式指南:编写更简洁、可扩展的代码

格式化代码

除了命名之外,格式化还有助于减少猜测并提高代码清晰度。通过遵循标准化风格指南,代码审查不再关注代码的外观,而是更多地关注代码的功能。

旨在个性化您的团队格式化代码的方式。设置 Unity 样式指南时,请考虑以下每条代码格式建议。您可以选择省略、扩展或修改这些示例规则以满足您团队的需求。

在所有情况下,反思您的团队将如何实施每条格式规则,然后让每个人都统一应用它。请参阅您团队的风格指南来解决任何差异。你考虑格式越少,你的工作效率就越高,创造力也越高。

让我们看一些格式指南。

特性

属性提供了一种读取、写入或计算类值的灵活机制。属性的行为就像是公共成员变量一样,但实际上它们是称为 访问器的特殊方法。

每个属性都有一个 get 和 set 方法来访问私有字段,称为 支持字段。这样,属性 就封装了数据,将其隐藏起来,以防止用户或外部对象进行不必要的更改。“getter” 和 “setter” 各自都有自己的访问修饰符,允许您的属性为 读写只读只写

您还可以使用访问器来验证或转换数据(例如,验证数据是否符合您的首选格式或将值更改为特定单位)。

属性的语法可能有所不同,因此您的样式指南应该定义如何格式化它们。请参阅以下示例,了解有关如何在代码中保持属性一致性的提示。

表达式体属性

单行、只读属性 使用表达式体属性 (=>):这将返回私有支持字段。

自动实现的属性

其余所有内容均使用 表达式体 { get; set; } 语法:如果您只想公开公共属性而不指定支持字段,请使用 自动实现的属性

对集合和获取访问器应用表达式体语法。如果您不想提供写访问权限,请记得将“setter”设为私有。将多行代码块的闭括号与开括号对齐。

可序列化类
可序列化的类或结构可以帮助组织检查器。
序列化

脚本序列化是将数据结构或对象状态转换为 Unity 可以存储和稍后重建的格式的自动过程。出于性能原因,Unity 处理序列化的方式与其他编程环境不同。

序列化字段出现在 Inspector中,但您不能序列化静态、常量或只读字段。它们必须是公共的或者标有 [SerializeField] 属性。Unity 仅序列化某些字段类型,因此请参阅 文档 以了解完整的序列化规则。

使用序列化字段时请遵循以下基本准则:

使用 [SerializeField] 属性: SerializeField属性可以与私有或受保护的变量一起使用,使它们出现在 Inspector 中。这比将变量标记为公共可以更好地封装数据,并防止外部对象覆盖其值。

使用 Range 属性设置最小值和最大值:如果您想限制用户可以分配给数字字段的内容,则[Range(min, max)]属性非常方便。它还可以方便地将该字段表示为检查器中的滑块。

将数据分组到可序列化的类或结构中以清理 Inspector: 定义一个公共类或结构并用[Serializable]属性标记它。为想要在 Inspector 中公开的每种类型定义公共变量。

从另一个类引用此可序列化类。结果变量出现在检查器中的可折叠单位内。

括号或缩进样式

C# 中有两种常见的缩进样式:

Allman 风格,也称为 BSD 风格(来自 BSD Unix),将左花括号放在新行上。

K&R 样式,或“唯一真正的括号样式”,将左括号与前一个标题保持在同一行。

这些缩进样式 也存在变化。本指南中的示例使用了 Microsoft 框架设计指南中的 Allman 风格。无论您选择哪一个团队,请确保每个人都遵循相同的缩进和括号样式。您还可以尝试以下部分中的提示。

C 尖锐标签
WINDOWS 版 VISUAL STUDIO 中的选项卡设置
确定统一的缩进

缩进通常为两个或四个空格。让团队中的每个人都同意编辑器首选项中的设置,而无需引发 制表符与空格之间的激烈争论

在适用于 Windows的 Visual Studio 中,导航到 “工具”>“选项”>“文本编辑器”>“C#”>“选项卡”

在 Visual Studio forMac中,导航到 “首选项”>“源代码”>“C# 源代码”。选择 文本样式 来调整设置。

笔记:Visual Studio 提供了将制表符转换为空格的选项。

不要省略括号

不要省略括号 —— 即使是单行语句也不要省略。括号增加了一致性,使得你的代码更易于阅读和维护。在这个例子中,括号清楚地将动作 DoSomething 与循环分开。

如果您需要添加 Debug 行或者稍后运行 DoSomethingElse,括号已经就位。将该子句放在单独的行上使您能够简单地添加断点。

多行语句时请保留括号以保证语句清晰

不要从嵌套的多行语句中删除括号。在这种情况下删除括号不会引发错误,但可能会引起混淆。为了清晰起见,请使用大括号,即使它们是可选的。

标准化 switch 语句

格式可能有所不同,因此请在您的样式指南中记录您的团队偏好,并相应地标准化您的 switch 语句。

以下是缩进 case 语句的一个例子。

水平间距

诸如间距之类的简单操作就能增强代码在屏幕上的外观。尽管个人格式偏好可能有所不同,但请考虑以下建议以提高可读性。

添加空格

添加空格以降低代码密度。额外的空白使行的各部分之间产生视觉分离的感觉。

逗号后的空格

在函数参数之间的逗号后使用一个空格。

括号后无空格

不要在括号和函数参数后添加空格。

函数与括号之间没有空格

不要在函数名称和括号之间使用空格。

避免在括号内留空格

尽可能避免括号内有空格。

流量控制条件前的间距

在流控制条件前使用一个空格,并在流比较运算符和括号之间添加一个空格。

使用比较运算符进行空格

比较运算符前后使用一个空格。

可读性提示

保持行短并考虑水平空白。确定标准行宽(80-120 个字符),并将长行分成几个较小的语句,而不是让其溢出。

正如前面所讨论的,尝试保持缩进/层次结构。缩进代码可以提高可读性。

除非出于可读性考虑,否则不要使用列对齐。虽然这种间距可以使变量对齐,但它会使类型与名称的配对变得复杂。

然而,列对齐对于按位表达式或具有大量数据的结构很有用。但请注意,添加更多项目时,维持列对齐可能会带来更多工作量。一些自动格式化程序可能还会改变列的哪部分对齐。

垂直间距和区域

您还可以充分利用垂直间距。将脚本的相关部分放在一起,并充分利用空行。尝试按照以下方法从上到下组织您的代码:

  • 将相关或相似的方法组合在一起:代码需要合乎逻辑且连贯。将执行相同操作的方法放在一起,以便阅读您的逻辑的人不必在文件中跳来跳去。
  • 使用垂直空格来分隔类的不同部分:例如,您可以在之间添加两个空白行:
  • 变量声明和方法
  • 类和接口
  • if-then-else 块(如果它有助于提高可读性)

尽量减少这种情况,如果可能的话,在你的风格指南中跟踪它。

在代码中使用区域

#region 指令使您能够折叠和隐藏 C# 文件中的代码部分,从而使大文件更易于管理和更易于阅读。

但是,如果您遵循本指南中有关课程的一般建议,您的班级规模应该是可管理的,并且#region 指令是多余的。将代码分成更小的类,而不是将代码块隐藏在区域后面。如果源文件很短,您将不太愿意添加区域。

注意:许多开发人员认为这些区域是 代码异味或反模式。作为一个团队来决定你们站在辩论的哪一边。

C Sharp 偏好设置
预览窗口展示了您的风格指南选择。
Visual Studio 中的代码格式

如果这些格式规则看起来难以理解,请不要绝望。现代 IDE 使得设置和执行它们变得十分高效。您可以创建格式规则的模板,然后立即转换项目文件。

要设置脚本编辑器的格式规则:

  • 在适用于 Windows的 Visual Studio 中,导航到 “工具”>“选项”,然后找到 “文本编辑器”>“C#”>“代码样式格式”
  • 使用设置来修改 常规、缩进、新行、间距和换行 选项。
  • 在 Visual Studio forMac中,选择 “Visual Studio”>“首选项”,然后导航到 “源代码”>“代码格式”>“C# 源代码”
  • 选择顶部的 策略 ,然后转到 文本样式 选项卡。在 C# 格式 选项卡中,调整 缩进、新行、间距和换行设置

要强制你的脚本文件符合样式指南:

  • 在适用于 Windows的 Visual Studio 中,转到编辑 > 高级 > 格式化文档(Ctrl + K、Ctrl + D 热键组合)。如果只想格式化空格和制表符对齐,您也可以使用编辑器底部的 运行代码清理(Ctrl + K,Ctrl + E)
  • 在 Visual Studio for Mac中,转到 “编辑”>“格式化文档”(Ctrl + I 热键)。

在 Windows 上,您还可以通过 “工具”>“导入和导出设置”共享您的编辑器设置。导出具有样式指南的 C# 代码格式的文件,然后让每个团队成员导入该文件。

Visual Studio 帮助您遵守风格指南。格式化变得像使用热键一样简单。

笔记:您可以配置EditorConfig 文件(参见上文),而不是导入和导出 Visual Studio 设置。这样做有利于在不同的 IDE 之间共享格式。它还具有使用版本控制的额外好处。有关更多信息,请参阅 .NET 代码样式规则选项

虽然这并不是专门针对干净的代码,但请务必查看 使用 Visual Studio 加速 Unity 编程工作流程的 10 种方法。请记住,如果您应用这些提高效率的技巧,格式化和重构干净的代码会更加方便。

获取更多代码风格提示

在此 了解有关命名约定的更多信息或查看 完整的电子书。您还可以探索我们详细的 代码样式指南示例

您喜欢本文吗?
是的!
还行。