跳至主要內容
代码CR模板

代码CR模板

基础篇

  1. 编码风格遵循阿里巴巴Java开发手册

  2. 大型复杂流程程序必须提供流程图、时序图

    1. 被cr同学在cr开始需简单叙述项目大小及其背景,复杂流程需要cr实现逻辑是否match技术方案,减少实现跟技术方案的gap
  3. 业务逻辑划分是否合理,是否耦合

    1. 业务逻辑涉及领域的逻辑,明显或耦合的业务逻辑建议拆分
  4. 代码编码逻辑是否清晰

    1. 被cr同学需要讲清楚主干逻辑
  5. 合理有效的注释

    1. 逻辑复杂的代码或cr有疑问的逻辑,要求补充合理有效的注释
  6. 是否存在冗余代码

    1. 多余或者没有引用的代码建议删除
  7. 是否存在潜在NPE

    1. NPE是日常工作必出现的bug

      上下文字段使用不判空,getXX()操作,基本类型拆箱,需要防御式判断或Optional

  8. 日志打印规范

    1. 强制使用占位符进行日志打印,因为字符串拼接会使用 StringBuilder 的 append() 方式,有一定的性能损耗

      logger.info("are u ok : oid 1", oid);
      logger.info("are u ok : oid 1", oid);

  9. 有没有maven依赖冲突

    • 很多时候诡异的运行时bug,往往由于依赖冲突导致,cr建议确认是否有pom变更
  10. 资源释放

    • 无论是网络io还是文件io、资源释放的逻辑需要被cr到
  11. 统一错误码

    • 禁止统一返回-1、500等错误码,最好定义枚举,方便追溯问题
  12. 异常的处理

    • 出现异常的地方需要确认是否需要进行一下操作:直接返回、抛出异常、重试处理、恢复处理、熔断处理、降级处理、关闭业务

工作心得大约 4 分钟
技术方案模板

技术方案模板

  • 一、需求背景

    讲一下需求背景、业务目标、业务流程、要解决的问题和方案、预估收益。

  • 二、功能框架

    • 2.1 功能框架
  • 系统架构图

    • 2.2 业务流程
  • 数据流图

    • 2.3 权限设计
  • 是否涉及权限管理或者其他数据权限

    • 2.4 系统交互
  • 与其他业务系统或三方的交互

  • 三、需求拆解

    • 3.1 功能A
      • 3.1.1 生命周期
      • 3.1.2 状态机
      • 3.1.3 实现细节方案
  • 四、技术方案

    • 4.1 外部依赖和业务模块设计

    • 4.2 总体架构设计

    • 4.3 总体流程设计

    • 4.4 系统稳定性设计

      容错、扩容、监控、报警等信息

  • 五、数据模型设计

    数据ER图


工作心得小于 1 分钟
如何高效开会

如何高效开会

从毕业到现在,已经工作将近5年了,在这段期间也经历过大大小小的各种会议,有很多简明扼要直入主题的会议,也有不少浑浑噩噩,听半天不知道会议主题、自己的定位的会议。比如说以下这些会议:

  1. 开会前5-10分钟或者会议进行的过程中才被通知要参加会议,但是我们连这个会是干什么的,都有谁参加,讨论什么内容都不清楚,然后就被硬生生拉到一个会上。
  2. 莫名收到一个XX时间XX主题的会邀,会邀中没有会议议程说明,没有主持人来跟我做前置沟通,没有会议涉及的文档,根本无法判断我能做什么、对我来说有什么用的一个会。
  3. 你是会议主持人的角色,这个会议原本预计1个小时内结束的,但是中途参会人A和B由于某些分歧一直争执不下,持续发散讨论,最后不光会议超时了,也没有实质性进展。
  4. 参会人的角色不同,所关注的点也不一样。作为一名开发人员,我会关注逻辑能不能实现;而产品经理会关注这个需求价值是什么,成本有多大。讲了半天,可能你还没搞懂逻辑以及能否实现,这个需求已经拍板了。这种后续又会带来无限的扯皮。

工作心得大约 6 分钟