827 字
4 分钟
[Unity] 个人编码规范与命名准则参考

Unity C# 在写的过程中, 和纯 C# 是有很大出入的. 甚至说, Unity C# 就是邪教. 例如它的命名规范与 C# 是不一致的, 而且由于游戏引擎的介入, 编写时的习惯相较于 C# 来讲, 也需要有所改变.

通用编码规范#

常见的一些编码规范就不需要过多提及了, 这里只做简单列举.

  • 添加合适的空格和换行, 以使代码变得清晰明确
  • 相同功能或者相同类型的成员尽量放在一起, 例如私有成员的定义写在一起, 公开成员的定义写在一起.

命名准则参考#

关于 “不使用” 的规则

  • C# 从来不会使用蛇形命名法, 除了前缀, 不要在你的命名中出现下划线. 这样的名称是不规范的: button_ok
  • C# 从来不会使用匈牙利命名法, 也就是在名称的尾部加上用以标识类型的后缀. 这样的名称是不规范的: frmShop(表示一个商店的窗体)
  • C# 基本不会使用缩写, 除了常用与通用的缩写例如 “HTTP”(Hyper text transfer protocol) 和 “ID”(Identifier) , 不要使用缩写. 这样的名称是不规范的: acc(account), btn(button). 你应该使用它们的全称, 除非它的全称真的很长.

参考: 通用命名约定 - 框架设计指引 | Microsoft Learn


关于 “Unity C# 与 C# 不同之处”

  • Unity C# 标准库的属性(Properties)并没有按照 C# 规范使用大驼峰命名法.

成员命名:

  • 所有公开的成员都应该使用帕斯卡命名法. 但是对于属性和字段, 你可以考虑使用驼峰命名法, 因为 Unity 就是这么做的. 这个可以根据你的习惯选择.
  • 私有字段成员建议使用下划线前缀驼峰命名法
  • 所有的方法名称都应该使用帕斯卡命名法. 不论其访问等级是怎样的, 方法都应该使用帕斯卡命名法
  • 所有的方法参数都应该使用驼峰命名法.

类型定义:

  • 所有的类型定义都应该使用帕斯卡命名法
  • 接口定义应该有 ‘I’ 前缀.

关于语义上的建议.

  • 关于游戏对象的控制脚本, 可以以 ‘Controller’ 为后缀命名, 当然, 如果觉得太长, 使用 ‘Ctrl’ 作为后缀也是可以的.
  • 当脚本中需要引用某些游戏对象的时候, 可以将这个字段名添加 ‘Ref’ 后缀来表示这是个游戏对象引用.
  • 当引用的某个游戏对象是专门用来作为另一个游戏对象的父对象的时候, 也就是 “插槽”, 你也可以使用 ‘Slot’ 作为后缀来命名, 这样看到名字就能知道用途.
  • 当引用一个预制体的时候, 可以使用 ‘Prefab’ 后缀来表示这里需要一个预制体.

为什么前面说不使用类型前缀, 而这里又推荐使用后缀. 是因为 Unity 中游戏对象可能是场景中的, 也有可能是预制体. 引用的时候, 字段声明是一模一样的. 只能在名称上加后缀加以区分.

[Unity] 个人编码规范与命名准则参考
https://slimenull.com/posts/20231031081556/
作者
SlimeNull
发布于
2023-10-31
许可协议
CC BY-NC-SA 4.0