以前零零散散写了几篇文章,主要是实际开发过程当中一些效率痛点和相应的改善方法。今天抽空温故知新,把以前的内容串起来,作了个小总结,即《效率专精系列》小系列的总集篇。html
开发一个新项目时,开发流程大概分红如下几步:java
公司内部使用Wiki(XConfluence
)管理全部文档,因为互联网产品的大部分开发模式都偏向于面向数据库编程,设计文档里ER图是展示设计的重要工具。可是绘制ER图是个挺费劲的活,不是说自带的draw.io
组件很差用,而是说ER图和代码(Sql语句或Java代码)不能互相转化,二者的内容格式高度重合,却只能人工转化。git
目前个人方式是先在Intellij Idea
中写好持久化对象(PO
),用POJO to Text
插件把POJO转化为文本并复制到系统剪切板中,而后复制到ER图里,节省了重复录入类名和字段名的时间。github
举个栗子,PO类的自定义文本形式为“PO\n
id\n
updateTime”。
Class PO { private int id; private Date updateTime; //getter/setter }
上下游服务之间有很完善的并行开发方案,即基于接口的开发,经过带有版本号的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 | 能够 | 不能够 |
互联网公司常见的ORM组件再也不是重型的Hibernate
,而是轻量级的Mybatis
(其实都不算ORM了,最可能是Sql模板)。Mybatis
中我认为最繁琐的工做就是写业务Sql了,基本上是getXXXByYYYZZZ
这种形式,要么再加上分页,类型特征十分明显。后端
目前个人方式是利用Intellij Idea
的Mybatis
插件,把Mybatis Mapper
类中的Java接口转化成对应的Sql语句。在不考虑优化的状况下,这种类型的Sql若是能自动生成就能节约很多人力,毕竟Sql语句比Java接口声明长多了。app
【效率专精系列】善用插件提高MyBatis开发效率
一般上下游都把本身的分支部署到beta环境来进行联调,存在分支冲突的风险;并且若是代码质量不高的话联调过程当中须要反复更新代码,因为beta环境不支持热部署,更新代码的时间成本很高。
目前个人方式是不论是Rpc服务仍是URL,把联调放在双方的本地机器上进行,这样热更新、热部署都没问题了。
【效率专精系列】Beta环境不须要,本地联调拯救开发效率
【效率专精系列】几种常见的JVM热部署技术及实现难点浅谈
身在互联网,加班易,不加班难,且行且珍惜。