1.养成良好的命名习惯
标识符是分配给类型(类、接口、结构、委托或枚举)、成员、变量或命名空间的名称。简单来说就是标识符是以上命名时你自定义的名称
@的作用:如果你想以C#的关键字来命名,可以在标识符上使用@前缀来声明与 C# 关键字匹配的标识符。
一般我们遵循在C#中,以帕斯卡命名法(PascalCase)和骆驼命名法(camelCase)居多。在C#中,简单的变量一般用camelCase规则,而比较高级的命名使用PascalCase。这两种命名方法非常简单而且容易学习这里就不赘述了。
建议命名时:变量名称应该简洁但有意义,函数名称应该包含动词。
以下来自C#官方文档标识符名称 - 规则和约定 - C# | Microsoft Learn的命名规则参考学习:
-
接口名称以大写字母
I
开头。 -
属性类型以单词
Attribute
结尾。 -
枚举类型对非标记使用单数名词,对标记使用复数名词。
-
标识符不应包含两个连续的下划线 (
_
) 字符。 这些名称保留给编译器生成的标识符。 -
对方法参数和局部变量使用驼峰式大小写。
-
将 PascalCase 用于类名和方法名称。
-
对方法参数和局部变量使用 camelCase 驼峰式大小写。
-
将 PascalCase 用于常量名,包括字段和局部常量。
-
专用实例字段以下划线 (
_
) 开头,其余文本为驼峰式大小写。 -
避免在名称中使用缩写或首字母缩略词,但广为人知和广泛接受的缩写除外。
- 避免使用单字母名称,但简单循环计数器除外。
2.养成良好注释习惯
写公共方法时一定要写注释,并且长期维护代码的注释,方便自己或团队做Review。
编写README.md,保证团队其他成员快速熟悉架构,还有自己遗忘。
没写完的代码要做TO DO标识,方便下一次快速衔接工作。
3.保持代码可读性
学会代码格式化,产生风格一致的代码,提高代码清晰度。
学会利用单一原则、里氏替换原则等。
代码尽量根据用法分别封装在函数里,而不是全部放在Update里,比如人物系统分解成多个小而独立的模块,每个模块都有自己明确的职责。
4.尽可能地使用属性而不是可直接访问的数据成员
属性允许将数据成员作为共有接口的一部分暴露出去,同时仍旧提供面向对象环境下所需的封装。
5.减少使用单例的次数
单例可能更适合中小型游戏。请谨慎使用它们,或考虑使用依赖注入作为替代方案。使用单例不要销毁原来的实例,而要销毁新的类。
private void Awake()
{
if (instance == null)
{
instance = this;
}
else
{
Destroy(gameObject);
}
}
6.使用哈希值而不是字符串参数
Unity 不使用字符串名称来在内部寻址 Animator、Material或 Shader 属性。为了提高速度,所有属性名称都被散列为 属性 ID,并且这些 ID 用于寻址属性。
在 Animator、Material 或 Shader 上使用 Set 或 Get 方法时,请利用整数值方法而不是字符串值方法。字符串值方法执行字符串散列,然后将散列的 ID 转发给整数值方法。
使用 Animator.StringToHash 作为 Animator 属性名称,使用 Shader.PropertyToID 作为 Material 和 Shader 属性名称。
8.括号或缩进样式
C# 中有两种常见的缩进样式:
Allman 风格,也称为 BSD 风格(来自 BSD Unix),将左花括号放在新行上。
K&R 样式,或“唯一真正的括号样式”,将左括号与前一个标题保持在同一行。
7.使用版本控制系统
可以帮助开发者管理项目代码变更历史,并允许多人协作开发时能够有效同步工作成果。推荐PlasticSCM,git
参考:《Effective C#》提炼总结、C#官方文档