美文网首页
开发规范

开发规范

作者: 双鬼带单 | 来源:发表于2021-02-05 21:04 被阅读0次

本规范只适合个人,还望大家多提意见

Table of Contents

目标

  • 整洁
  • 统一
  • 易读
  • 模块化
  • 心情愉悦

原则

  • 短小精悍 最多50行,建议30行以下
  • KISS “kiss Simple and Stupid” 的缩写,意思是“保持简单和愚蠢”
  • 六大原则
    • 单一职责原则(Single Responsibility Principle, SRP)
      • 一个类只负责一个功能领域中的相应职责
    • 开闭原则(Open-Closed Principle, OCP)
      • 对扩展开放,对修改关闭,在不修改原有内部代码的情况支持扩展
    • 里氏代换原则(Liskov Substitution Principle, LSP)
    • 依赖倒转原则(Dependency Inversion Principle, DIP)
      • 依赖抽象而不是实现
    • 接口隔离原则(Interface Segregation Principle, ISP
    • 迪米特法则(Law of Demeter, LoD)(最少知识法则)

代码规范

规约

  • 返回值不要使用 Map 除非你知道你在干什么
  • 尽量减少魔法值,多使用枚举或常量
  • 命名
    • 禁止使用 Oracle、MySQL、JavaScript、Java、Python、Go 关键字命名
    • 使用英文,不能中英文混用,金融专业名词问卓阳
    • Java 代码使用驼峰英文,常量大写下划线
    • 枚举类加 Enum 后缀
    • 查询方法 get 开头,不再使用 find / select
    • 只能使用专业约定的缩写,不要制造缩写,不要嫌变量名长
      • 例如 requestNo 和 RN
    • 不要在不同的类、表、项目中使用近义的英文,应该使用同一个
      • 例如 status、verify_status
    • DTO 数据传输对象
    • DO 数据库实体对象
  • 风格
    • 缩进使用2个空格
    • 单行长度不建议超过 120, 为了语义通顺,可以减少没必要的换行
    • 方法参数尽量少于10个
    • 方法有效代码行数不建议超过 50 行
      • 过长的方法难以维护和理解
      • 例外:
        • 某些对象初始化导致方法过长
        • 方法处理严重依赖上下文结果,比如计算逻辑
    • 方法复杂度建议不超过 10
    • 不同逻辑、不同语义代码之间插入一个空行
    • 控制语句必须加括号,单行也不例外
    • 注释必须使用 javadoc 规范,注意不加冒号
      • @author 作者
      • @param 参数名 参数用途
      • @since 版本号/时间
      • @see 关联类
      • @return 返回值描述
  • OOP
    • 重写 toString()
    • 过时方法加 Deprecated 注解
    • 调用 equals 时注意空指针
    • 调用其他方法也注意空指针
    • 注意访问级别
  • 集合处理
    • 优先使用集合工具类判空,虽然 mybaits 的返回值空集合,但也不要直接调用 size 判空
    • 如果能预知容量,初始化时规定容量,防止扩容
  • 注释
    • 被注释掉的代码前一定要有原因
    • 复杂逻辑最好在方法上写出实现思路
    • 方法参数如果是枚举值,尽量写一下

日志和异常

  • catch 就是为了处理异常,不能什么都不做,至少需要打日志
  • 不要使用 e.printStackException 打印日志
  • 使用 warn 记录参数错误问题,不要使用 error
  • 对于可重试且不是系统配置问题导致的错误,打印 warn
  • 系统配置错误、重试不能解决,打印 error
  • 打印 log 时 exception 对象,不用出现在占位符中
  • 日志描述内容使用英文下划线,尽量不要使用空格,kibana 搜索有问题
  • 框架日志看情况调整级别
  • 关键流程,如进件、审核、还款流程多打关键日志
  • 关键流程分支有日志
  • 日志必须有效,可用于排查问题

单元测试

  • 提高单元测试覆盖率
  • 原则
    • 独立
    • 可重复
    • 自动化

SQL

  • 注意 Null 值判断

安全

  • 四要素脱敏
  • 用户只能访问自己的数据
    • 用户账单
    • 机构查询自己的账单
  • 不要依赖前端校验
  • SQL 注入

建议

  • 过于垃圾代码和配置(过时,无法访问)直接删除
  • 多用组合,少用继承
  • 参数最小化,避免大而空
  • 多用工具类,少写重复代码 优先级 guava/apache
  • 时期计算使用java8新语法,或者 jode工具类
  • 不要重复自己 DIY

流程

gitlab pull meger 时, 写上主要改动的地方和逻辑,方便 review

上线流程

开始测试时

  • 检查redmine是否存在遗漏(flyway,新资源,SQL)
  • 如果需要运维配合,开始和老铁聊聊人生
  • 项目测试中,是否新加入项目

准备上线

  • 如果有 flyway 变更
    • 使用一个空本地库,那其上执行 flyway
    • 跑单测,如果有问题,解决后再上线
  • 检查代码是否有冲突
  • 检查 redmine 是否存在遗漏,防止出现项目漏上,flyway漏写情况
  • 检查代码是否有配置改动,注意生产环境配置
  • 检查是否有SQL脚本(初始化数据)
  • 检查代码是否有快照版本
  • 代码一定要本地编译通过

上线后

  • 确认flyway是否执行
  • 确认SQL是否执行
  • 确认代码是否有误
  • 确认项目是否上齐
  • 确认定时任务修改
  • 确认功能是否符合预期

相关文章

  • 移动前端开发规范(一般规范)

    系列目录 移动前端开发规范(一般规范)移动前端开发规范(技术栈规范)移动前端开发规范(HTML规范)移动前端开发规...

  • 开发规范

    开发规范分为以下几种1.后台开发规范2.界面布局规范3.模块命名规范4.数据库开发规范 2.界面布局规范 软件窗口...

  • MySQL运维及开发规范

    MySQL运维及开发规范 一.基础规范 二.命名规范 库、表、字段开发设计规范 四.索引规范 五.SQL规范 六....

  • 开发规范 | iOS开发规范

    1. 关于命名 1> 统一要求 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释 使用全称,不适用缩...

  • iOS开发规范

    iOS开发规范 目录 编写目的 制定开发规范,可以在团队内部形成统一的开发习惯,减少协作的理解成本。此开发规范主要...

  • 2018-09-19 开发规范的重要性

    为什么要规范开发规范

  • Android组开发规范-参考95%参考阿里

    Android组开发规范 本文参考借鉴阿里Android规范 一、目标 Android组开发规范用以指导团队成员,...

  • Android开发规范

    Android开发规范有助于提高开发效率,整理,搜集开发规范后,如下 比较全面具体的规范来自:原创文章,转载请注明...

  • 《javascript基础补充--开发规范》

    JavaScript 开发规范 本篇文章主要介绍了JS的命名规范、注释规范以及开发的一些问题 目录 命名规范:介绍...

  • VueJs前端开发规范

    ## VUEJS开发规范 ## 1. 基于组件化开发理解 2. 组件命名规范 3. 结构化规范 4. 注释规范 5...

网友评论

      本文标题:开发规范

      本文链接:https://www.haomeiwen.com/subject/dubgtltx.html