个人开发测试

  • 关于
  • 历史项目
  • 游戏开发
    • 一些轮子
    • Unity
    • UnReal
    • Godot
    • 常用框架
  • 游戏设计
    • 游戏品类研究
    • 游戏心理学
    • 游戏杂谈
  • 计算机科学
    • 算法、数据结构
    • 图形学
    • 网络
    • 计算机语言
  • 留言板
  • 推荐
游戏开发/个人感悟/一些废话
  1. 首页
  2. 游戏开发
  3. 常用框架
  4. 正文

【1】【常用框架】框架-代码规范

2022年3月14日 2619点热度 0人点赞 0条评论

编码规范

规范项目编码

术语定义

  • Pascal 大小写

将标识符的首字母和后面连接的每个单词的首字母都大写。 例如:CodingStandard

  • Camel 大小写

将标识符的首字母小写,而后面连接的每个单词的首字母都大写。 例如:codingStandard

命名规范

  • 文件及文件夹

1.文件/文件夹名遵从Pascal命名法,无特殊情况,扩展名小写。

2.C#类使用统一而又通用的文件扩展名: C# 类名 .cs,正常情况下,一个cs文件中不能含有两个及以上的类。

  • 代码注释

public、protect等可被外界访问权限的类、方法、属性、变量等,都应使用C#的标准XML注释语法,例如:

/// <summary>
/// 方法功能简述
/// </summary>
/// <param name="a">第一个参数 a</param>
/// <param name="b">第二个参数 b</param>
/// <returns>返回值简述</returns>

其他如私有变量、方法等可使用常规//单行注释或/**/多行注释。

  • 命名空间

命名空间的命名:Pascal,例如:System.Drawing

  • 类、结构体

类、结构体的命名:Pascal,例如:AppDomain

  • 枚举类型

枚举类型的命名:Pascal,例如:ErrorLevel。

  • 枚举值

枚举值的命名:Pascal,例如:FatalError。

  • 接口

接口的命名:I + Pascal,例如:IDisposable,(应当总是以 I 前缀开始)。

  • 公开的/内部的/静态的属性、字段

公开的/内部的属性、字段的命名:Pascal,例如:BackColor。

  • 受保护的/私有的属性、字段

受保护的/私有的属性、字段的命名:_ + Camel,例如:_redValue。

  • 参数

参数的命名:Camel,例如:typeName。

  • 局部变量

局部变量的命名:Camel,例如:backColor。

  • 常量

常量的命名:全大写,例如:VALUE。

  • 方法

方法的命名:Pascal,例如:ToString。

  • 回调方法

回调方法的命名:On + Pascal,例如:OnInitialization,(应当总是以 On 前缀开始)。

类成员排序规范

  • 按作用域排序(从上至下)

静态(只读、常量)成员 - 实例成员。

  • 按类型排序(从上至下)

字段 - 属性 - 方法。

  • 按权限排序(从上至下)

公有(内部)成员 - 保护成员 - 私有成员。

类成员分段规范

一个分段内的成员之间不留间隔,两个分段之间留一个空白行作为间隔。

  • 按作用域分段

静态(只读、常量)成员为一段,实例成员为一段。

  • 按类型分段

字段为一段,属性为一段,方法为一段。

  • 按权限分段

公有(内部)成员为一段,保护成员为一段,私有成员为一段。

  • 按业务分段

不同业务功能为一段。

代码审查制度

参考该文档:Code Review Checklist and Guidelines for C# Developers。

  • 编译完成后,确保控制台没有任何警告。
  • 去掉所有没有用到的 usings,编码过程中去掉多余代码是个好习惯。
  • 在合理的地方检查对象是否为 null,避免运行的时候出现 Null Reference Exception。
  • 始终遵循命名规范。
  • 如果可以,尽量减小方法体的大小,减少代码的分支,保持成员名的简短。
  • 代码可重用性:如果一块代码已经被使用超过一次,或者你希望将来使用它,请提取成一个方法,将重复的工作做成通用的方法放在相关的类中,这样一旦你完成别人就可以使用了。
  • 代码一致性:比方说,Int32 写成 int,String 写成 string,应该在代码里保持统一形式,不能一会儿写成 int 一会儿写成 Int32。
  • 代码可读性:代码应该是可维护的,便于其他开发者理解。
  • 及时释放非托管资源,比如文件I/O,网络资源等,一旦使用结束就应该释放它们,如果你想一旦超出使用范围就自动释放对象,可以使用 using 将非托管代码括起来。
  • 合理实现异常处理(try/catch 和 finally 块)和异常记录。
  • 如果代码只会使用一次,请使用匿名类型。
  • 使用访问限定符(private, public, protected, internal, protected internal)限定每个方法、类或变量的访问范围,比方说如果一个类只会在程序集内使用,那么定义成 internal 就足够了。
  • 在需要保持解耦的地方使用接口,有些设计模式的出现也是由于接口的使用。
  • 按照用法和需要将类定义为 sealed、static 或 abstract。
  • 如果需要多次(大于3次)串联,请使用 Stringbuilder 代替 string,这可以节省堆内存。
  • 检查是否有不可能执行的代码,如果有,请修改。
  • 在每个方法前注释,说明它的用法、输入类型和返回值类型信息。
  • 尽量减少强制转换和类型转换的次数,因为会造成性能损失。
  • 确认代码是否有内存泄漏,如果有,请确保已修正。
  • 要透彻理解 OOP 概念,并尽可能在自己的代码里实现。
  • 了解整个项目的设计架构,可以从整体上理解程序的执行流程。
标签: 游戏开发
最后更新:2022年5月26日

可以吃的妙脆角

平平无奇的游戏开发者

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

归档
  • 2024 年 2 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 1 月
  • 2022 年 11 月
  • 2022 年 9 月
  • 2022 年 6 月
  • 2022 年 5 月
  • 2022 年 4 月
  • 2022 年 3 月
  • 2022 年 2 月
  • 2022 年 1 月
  • 2021 年 4 月
  • 2020 年 11 月
  • 2020 年 9 月
  • 2020 年 8 月
  • 2020 年 7 月
  • 2020 年 4 月
分类
  • CSharp
  • Lua
  • NAS
  • Unity
  • 一些轮子
  • 历史项目
  • 尚未分类
  • 常用框架
  • 杂
  • 游戏品类研究
  • 游戏开发
  • 游戏杂谈
  • 游戏设计
  • 计算机科学
已阻挡的垃圾评论
3条垃圾评论已被Akismet阻挡

COPYRIGHT © 2022 XuYue. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

京ICP备2022001429号-1