【效率专精系列】我有一个梦想:提升开发效率,晚上回家吃鸡

以前零零散散写了几篇文章,主要是实际开发过程当中一些效率痛点和相应的改善方法。今天抽空温故知新,把以前的内容串起来,作了个小总结,即《效率专精系列》小系列的总集篇。html

回顾项目开发流程

开发一个新项目时,开发流程大概分红如下几步:java

  1. 设计方案,并落地成设计文档
  2. 设计方案评审
  3. 任务分拆
  4. 和上下游规定接口(服务、先后端等)
  5. 代码开发
  6. 开发自测
  7. 上下游联调(服务、先后端等)
  8. 提交QA测试

效率可改进的点

S1. 设计方案,并落地成设计文档

公司内部使用Wiki(XConfluence)管理全部文档,因为互联网产品的大部分开发模式都偏向于面向数据库编程,设计文档里ER图是展示设计的重要工具。可是绘制ER图是个挺费劲的活,不是说自带的draw.io组件很差用,而是说ER图和代码(Sql语句或Java代码)不能互相转化,二者的内容格式高度重合,却只能人工转化。git

目前个人方式是先在Intellij Idea中写好持久化对象(PO),用POJO to Text插件把POJO转化为文本并复制到系统剪切板中,而后复制到ER图里,节省了重复录入类名和字段名的时间。github

举个栗子,PO类的自定义文本形式为“PO \nid \nupdateTime”。
Class PO {
        private int id;
        private Date updateTime;
        //getter/setter
    }

S4. 和上下游规定接口(服务、先后端等)/ S6. 开发自测

上下游服务之间有很完善的并行开发方案,即基于接口的开发,经过带有版本号的jar包来解耦双方具体实现的开发。但若是是先后端之间规定接口,通常须要先写接口文档,再写代码,与上面相似,其中不少内容须要人工重复录入,好比说URI、Param、Header、Body体等。数据库

利用API统一描述语言OpenAPI和相应的工具Swagger2可在文档和代码之间搭起一座桥梁。另外该工具也可节约自测中的部分录入工做,如录入URL和Param。编程

【效率专精系列】善用API统一描述语言提高RestAPI开发效率
5分钟搞定Swagger2环境配置与使用

考虑到篇幅较长的文档反复修改的状况,要快速找到API修改点比较困难。json

目前个人方式是利用版本管理和文本比较功能:比方说把API文档和代码一块儿放在git仓库,或者使用其余带版本管理的文档库;使用git仓库自带的文本比较功能,或者在线的代码比较网站。segmentfault

文本比较网站 去除前导空格 分享给他人 其余
www.diffnow.com 能够 能够 界面风格原始
www.diffchecker.com 不能够 能够
www.newjson.com/Static/Tools/Diff.html 能够 不能够

S5. 代码开发

互联网公司常见的ORM组件再也不是重型的Hibernate,而是轻量级的Mybatis(其实都不算ORM了,最可能是Sql模板)。Mybatis中我认为最繁琐的工做就是写业务Sql了,基本上是getXXXByYYYZZZ这种形式,要么再加上分页,类型特征十分明显。后端

目前个人方式是利用Intellij IdeaMybatis插件,把Mybatis Mapper类中的Java接口转化成对应的Sql语句。在不考虑优化的状况下,这种类型的Sql若是能自动生成就能节约很多人力,毕竟Sql语句比Java接口声明长多了。app

【效率专精系列】善用插件提高MyBatis开发效率

S7. 上下游联调(服务、先后端等)

一般上下游都把本身的分支部署到beta环境来进行联调,存在分支冲突的风险;并且若是代码质量不高的话联调过程当中须要反复更新代码,因为beta环境不支持热部署,更新代码的时间成本很高。

目前个人方式是不论是Rpc服务仍是URL,把联调放在双方的本地机器上进行,这样热更新、热部署都没问题了。

【效率专精系列】Beta环境不须要,本地联调拯救开发效率
【效率专精系列】几种常见的JVM热部署技术及实现难点浅谈

小诗云

身在互联网,加班易,不加班难,且行且珍惜。

相关文章
相关标签/搜索