写点什么

事业 - 最佳实践 - 编码 - 编码规范

作者:南山
  • 2024-04-06
    江苏
  • 本文字数:1101 字

    阅读完需:约 4 分钟

事业-最佳实践-编码系列

一、原则

  • 团队统一

二、价值

  • 降低代码出错的几率

  • 提高编码的效率

  • 降低软件维护成本

  • 越使用越高效

三、检查清单

1、编码

  • 源代码组织

  • 代码的分块是否恰当

  • 代码的缩进是否清晰、整洁

  • 有没有代码超出了每行字数的限制

  • 代码的换行有没有引起混淆

  • 括号的使用是不是一致、清晰

  • 注释

  • 代码有没有充分的注释

  • 有没有注释掉的代码需要及时清理

  • 注释是不是准确、必要、清晰

  • 命名

  • 名字是否遵守命名规范

  • 名字是不是拼写正确、简单易懂

  • 名字是不是有准确的意义

  • 是否通过表意接口封装复杂逻辑

  • 是否使用表意变量替代魔法数字

  • 变量的声明是不是容易检索和识别

  • 代码逻辑

  • 复杂的表达式能不能拆解成简单的代码块

  • 每一行代码是不是只有一个行为

  • 变量的初始化有没有遗漏

  • 代码逻辑是否清晰. 能够容易读懂. 函数或者类是否复杂,需要拆分

  • 是否有重复代码,可以合并

  • 代码边界处理是否遗漏

  • 空指针判断

  • 异常逻辑判断

  • 异常的处理(是否有吞噬异常的代码)

  • 批量查询限制最大数量

  • 数据库查询 is_valid 是否考虑

  • 类型转换是否正确

  • 核心数据是否没做校验,完全依赖外部输入?

  • 代码中使用的数据结构是否合理? List?Map?Set?Queue?Tree?

  • 日志

  • 使用占位符输出

  • 不允许提前串化对象

  • 不允许直接 e.printStackTrace()

  • 不能只打印 e.getMessage()

  • 日志输出时机是否合理

  • 单元测试

  • 代码是否易测试?

  • 核心场景是否都有单元测试?

  • 单元测试有没有覆盖各种正常、异常情况?

2、设计

  • 代码是否实现了预期的业务需求?

  • 目录设置是否合理、模块划分是否清晰?

  • 代码结构是否满足“高内聚、松耦合”?

  • 是否遵循经典的设计原则和设计思想(SOLID、DRY、KISS、YAGNI、LOD 等)?

  • 是否有过度设计?

  • 设计模式是否应用得当?

  • 代码是否容易扩展?

  • 代码是否可以复用?

3、接口

  • 接口出入参有变更,能否兼容历史数据

  • 接口必传字段是否做非空校验

  • 接口没有使用基本类型、枚举

  • 是否支持幂等

  • 是否存在性能问题

  • 是否必须新增接口方法

  • 是否需要新增接口类

  • 接口类是否满足单一原则、接口隔离原则

4、多线程

  • 必要性:总时间,vs 单线程

  • 是否可能创建大量线程吃光 CPU

  • 线程间是否负载均衡

  • 线程池:并行度,队列是否可能把堆打满,是否合理指定饱和策略,是否正确关闭

5、数据库

  • 是否涉及两表及以上的关联查询且可能出现慢查

  • 是否涉及通过非主键更新或删除记录

  • 确保查询是走索引的,观注读选比

  • 确保不会一次查询大量结果,将堆打满

  • 深度分页确保使用索引覆盖 + 批量 ID 查询的方式实现

  • 涉及 DB 更新操作需要事务控制

  • 确保事务生效

  • 合理设置事务隔离级别

  • 合理设置事务传播特性

  • 避免大事务

  • 事务中禁止远程调用(RPC、MQ 等操作)

6、缓存

  • 必要性

  • 数据一致性

  • 命中率

7、MQ

  • MQ 的协议如有改动是否影响老代码

  • 消息是否考虑丢失情况处理

  • 重复消息是否支持幂等处理

  • 消费速度是否大于生产速度

8、配置

  • 集群环境配置是否正确

  • 提供的脚本是否是线上配置

发布于: 刚刚阅读数: 4
用户头像

南山

关注

采菊东篱下,悠然见南山~ 2018-05-04 加入

黄沙百战穿金甲,不破楼兰终不悔!

评论

发布
暂无评论
事业-最佳实践-编码-编码规范_数据库设计_南山_InfoQ写作社区