常规项
- 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等。
- 所有的代码是否简单易懂?
- 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释。
- 是否存在多余的或是重复的代码?
- 代码是否尽可能的模块化了?
- 是否有可以被替换的全局变量?
- 是否有被注释掉的代码?
- 循环是否设置了长度和正确的终止条件?
- 是否有可以被库函数替代的代码?
- 是否有可以删除的日志或调试代码?
安全项
- 所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围)并且进行了编码?
- 在哪里使用了第三方工具,返回的错误是否被捕获?是否有异常处理。
- 输出的值是否进行了检查并且编码?
- 无效的参数值是否能够处理?
易读性
- 是否有注释,并且描述了代码的意图?
- 对非常规行为和边界情况处理是否有描述?
- 第三方库的使用和函数是否有文档?
- 数据结构和计量单位是否进行了解释?
- 是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’?
功能项
- 消息写越界,是否有变长消息太长,可能会写越界,比如,好友列表,队伍列表等。
- Proto序列化进二进制档中的数据,有没有只增大,没有删除的地方,二进制数据过大,会导致存档失败。
- 内存泄露检查,逻辑中有没有new了内存,需要释放但是没有处理的,比如对象创建。
- 使用道具操作检查,有没有可能造成刷道具的,在使用道具过程中必须是先扣除再做相关操作。
- 货币操作检查,RecudeCoin,必须是操作成功后再做扣钱相关操作。过程中必须有检查,不能相信客户端的数据直接扣除。
- 数据库句柄,有没有使用局部句柄封装,使用原生句柄有没有释放句柄。