在软件开发过程中,大到业务模块的划分,小到技术组件的开发,都属于组件化的思考范畴内。很多时候我们到网上搜索「组件化」关键词,都只会看到关于前端组件化的资料,而对于后台开发组件化的资料却很少,那这是不是代表后台组件化没有意义呢?

后台组件化肯定是有非常大的价值的,对于业务开发人员也有非常大的效率提升。所以本文我将通过自己做组件化的一些经验,谈谈我对后端组件化的一些看法,以及如何进行组件化开发,希望对在一线开发的工程师们有所帮助。

希望通过组件化的方式,能帮助一线工程师们减少对于重复业务代码的编写,提高开发效率,将更多时间和精力放在创新开发上。

如何发现组件化需求?

组件化,顾名思义,其实是通过将重复的业务操作统一起来,对外提供统一的接口,调用方不需要操心内部实现。通过组件化的方式,能统一业务代码规范,减少冗余代码,提高开发效率。

在软件开发的组件化里,要发现需求,你必须深入到具体的业务过程中去,了解整个业务流程。只有这样,你才能知道哪些东西需要优化,哪些东西是重复的。

当我刚刚进入珍爱网的时候,公司开启了精细化运营的需求,很多时候同一个需求对广东地区开放,而对湖南地区不开放。而当需求呈现正向积极效果的时候,需要对更多省份开放。

而这时候如果需要修改开放的测试地区,则需要开发、测试重新参与一次开发,并且走一遍开发流程。不仅仅效率低下,对于开发人员和测试的正常工作也是一种打扰。

针对这种情况,我试探性地开发出了开关服务。只需要再第一次开发的时候预埋上开关,之后如果需要修改测试省份就可以直接在管理后台进行修改,实时生效。

通过这种方式,你会发现原本需要开发和测试参与,耗时将近一天的开发流程。现在只需要产品自己操作,并且只需要几秒钟就能完成,几乎提高了100%的效率。

所以说发现组件化需求的关键,是参与到具体的业务开发中,发现重复的,可统一的业务。

如何开发组件?

当你发现一个可以进行优化的需求后,你下一步需要做的其实就是进行全方位的调研以及设计,从而保证你设计出来的组件能解决问题,并且能为广大需求方所接受。

根据我的经验,我一般将组件分为下面三种:服务、组件、后台管理系统。

服务。这种类型的组件提供一个通用的服务,提供给内部的其他系统调用,从而让其他系统的开发更加快捷。例如之前提到过的开发服务就是这样的。通过服务接口的方式提供出去,调用方能更加方便地使用,并且其中心化的特性也便于后期升级。

组件。这种类型的组件一般是与业务无关的组件,其通过引入 Jar 包的方式提供给其他系统使用。例如我做过的一个 SysCode 组件就是这样的,只需要引入相应 Jar 包,实现特定接口注入数据,就可以调用工具类进行 SysCode 操作。

后台管理系统。这种类型的组件其实就是一个管理后台,你发现客服部门经常用到某个功能,于是你将这个功能做到管理后台里,下次发生同样的问题时,他们就可以自己解决。这也是组件的其中一种。

对于这三种类型的组件,在设计的时候侧重点都略有不同。

服务类型的组件,在设计的时候需要对暴露出去的接口定义非常谨慎,因为接口一旦确定,后期就不能再变化,否则会导致原有使用方调用出错。

而组件类型的,在设计的时候需要考虑的是使用的时候是不是很方便,使用的路径会不会很长。

文章首发于【博客园-陈树义】,点击跳转到原文《如何通过组件化提高开发效率?》http://www.cnblogs.com/chanshuyi/p/how_to_develop_component.html

如何推广组件?

当你把组件做出来后,作为组件的开发者,你肩负着推广组件的作用。

首先,你肯定要让别人知道你为什么做这个组件,做这个组件的背景是什么,用这个组件有什么价值,最后就是怎么用?

而要回答上面所说到的问题,你不可能每个人问你的时候你都从头到尾说一遍,所以你需要针对你的组件写一个文档。我比较推荐的一种做法是写成一个 GitBook,这种呈现方式简单明了,方便阅读。

当你做好 GitBook 文档后,你以为就这样结束了么?

Naive!

这只是一个开始,你需要不断地在日常的开发中去向你的同事推销你的东西,把自己想象成一个热爱工作的销售,把组件当成是你的孩子,见人就说这个东西好,让更多人知道他。

之所以将组件化的推广说得如此艰辛的原因,我相信许多做过组件的人都明白。一开始做的东西别人都不愿意去尝试,因为谁知道你这里面有什么坑呢,我还不如自己弄呢。所以一开始的推广使用注定是很艰辛的,甚至是很苦逼。

所以不要以为做出组件,写完文档就结束了,这其实只是一个开始。

不断迭代!

鲁迅先生说过:好文章不是写出来的,而是改出来的。

在这里我也要说:好组件不是写出来的,而是改出来的。

私以为所有做组件的人,都应该抱有不断迭代的精神去做组件。

因为很多时候你刚刚做出来的东西都是非常简单的,虽然能解决问题,但是对于业务抽象的理解不够深刻,而且会存在多多少少的问题。

这时候你需要在不断推广和反馈中去优化你的组件,让你的组件做得更好。之后再不断地收集反馈,再优化,再反馈。

就这样,也许经过三四个轮回,你对组件的理解就趋于稳定了。

这个时候,你才可以说这个组件做完了!

文章首发于【博客园-陈树义】,点击跳转到原文《如何通过组件化提高开发效率?》http://www.cnblogs.com/chanshuyi/p/how_to_develop_component.html

转载于:https://www.cnblogs.com/chanshuyi/p/how_to_develop_component.html

如何通过组件化提高开发效率?相关推荐

  1. 从0到一开发微信小程序(7)—小程序组件库(提高开发效率)

    文章目录 其他相关文章 1.组件库 1.1.TDesign 引入TDesign 使用 NPM 修改 app.json 使用组件 TDesign的应用 Rate 评分 Sticky 吸顶容器 Toast ...

  2. 星图地球开发者平台,真的能提高开发效率吗?

    最近发现一款新的数据可视化应用系统的搭建平台,叫星图地球开发者平台(GEOVIS Earth Dev). 一听这个名字就知道,这是面向开发者的.没错,这个产品是星图地球发布的基于数字地球的低代码.一站 ...

  3. 低代码开发如何提高开发效率和降低成本

    低代码星球 点击上方蓝字 · 关注我们 CLICK THE BLUE WORD TO FOLLOW US 识别二维码加入我们 加入低码星球微信群 与低码爱好者交流 低代码开发已经成为软件开发中一股不可 ...

  4. “六神”——技术提高开发效率的一个方案

    这个方案并不是我在系统设计方面的最早一次尝试.但它在提高开发效率方面,是效果最为显著的一个方案. 简介 "六神"框架提供了一套简单而通用的.从Web层到数据库操作(增加单个数据.删 ...

  5. 合理使用webpack提高开发效率

    虽然公司有提供现成的脚手架工具,但是作为开发人员懂得必要的相关知识还是很重要的.这样有利于提高我们的开发效率,优化我们的代码. 关于npm scripts 什么是npm scripts npm 允许在 ...

  6. 可以500%提高开发效率的前端UI框架

    QUI 框架介绍 QUI网页界面集成框架是一套完整的企业级前端解决方案,由组件库.皮肤框架.示例工程和文档4部分组成.使用本产品开发者可以极大地减少工作量,提高开发效率,快速构建功能强大.美观.兼容的 ...

  7. 可以500%提高开发效率的前端UI框架!QUI!

    QUI 框架介绍 QUI网页界面集成框架是一套完整的企业级前端解决方案,由组件库.皮肤框架.示例工程和文档4部分组成.使用本产品开发者可以极大地减少工作量,提高开发效率,快速构建功能强大.美观.兼容的 ...

  8. 【效率】Launchy一个提高开发效率的小工具

    这是一款可以提高开发效率的简单软件,小巧便利,虽然她并不会帮助你提高你的开发能力,但是可以提高你的开发效率,如果你不信就去用用她. 通过这个不太好使,但是不得不去用他的网站百度,如果你有更好用的搜索引 ...

  9. 10个提高开发效率的Vue3常用插件(快来收藏)

    本篇文章给大家总结分享几个好用的 Vue 插件,可以帮助开发者提高开发效率.解决移动端各种滚动场景需求,希望对大家有所帮助! 1.vue-multiselect-next Vue.js 的通用选择/多 ...

最新文章

  1. 无人配送的Nuro再融5亿美元,为啥中国复刻者们没它这么火
  2. 彻底卸载vscode Linux,ubuntu如何卸载vscode
  3. opencv各版本链接及opencv_contrib库各版本链接
  4. NHibernate 做个小项目来试一下吧 一
  5. 如何选择面向对象语言
  6. 大数据计算引擎:impala对比hive
  7. 三维立体动画制作_三维立体动画制作相比传统方式的特点
  8. MacBook设置终端命令行的颜色高亮显示
  9. 遇到local variable ‘e‘ referenced before assignment这样的问题应该如何解决
  10. Pyqt+QRcode 生成 识别 二维码
  11. UTF-8格式编码与UTF-8无BOM格式编码的区别(包括java文件)
  12. 数据包络分析方法与maxdea软件_Ecoatmaster软件辅助电泳工艺评审的应用
  13. I2C接口触摸屏驱动分析
  14. ENGLISH-剑桥-朗文-柯林斯-韦氏dictionary
  15. 使用Apache FtpServer搭建FTP服务器 [FlashFXP]
  16. Hello MySQL(四)——MySQL数据库创建实例
  17. 使用 Python 第三方库发送电子邮件
  18. 关于XAMPP Apache 启动失败的问题
  19. 2014年总结和2015年的规划
  20. Java+SSM足球联赛管理系统(含源码+论文+答辩PPT等)

热门文章

  1. 按照姓名升序排序的代码_干货:6种EXCEL排序方法,让老板对你刮目相看
  2. 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)
  3. 使用nginx+tomcat实现动静分离
  4. 设计把所有的奇数移动到所有偶数前面的算法
  5. POJ1182 食物链 —— 种类并查集
  6. dealloc时取weakself引起崩溃
  7. 淘宝API调用 申请 获取session key
  8. 字符文本中的字符太多
  9. Oracle数据库的测试用户Scott的密码为什么是Tiger?
  10. 学习C++和编程的50个观点