文章插图
在实际项目开发过程中,只有高效的开发语言还不够,要想进一步将开发效率扩大化,不断的沉淀公共基础库是必不可少的,以便将通用的基础逻辑进一步抽象和复用 。
除此之外,通用组件能力是实现功能量产的根本,对开发效率会是质的提升 。组件化的开发模式会帮忙我们将问题的解决能力从一个点上提升到一个面上 。以下会重点介绍几个通用组件的实现,有了它们的存在,才能真正的解放程序员的生产力 。而这些强有力的公共组件在Golang中实现起来并不复杂 。同时,结合Golang的并发处理能力,相比于PHP的版本实现,执行效率也会有质的提升 。这是组件能力和语言效率的完美结合 。
文章插图
通用列表组件用于所有可能的二维数据源(如MySQL/MongoDB/ES等等)的数据查询场景,从一个面上解决了数据查询问题 。在Uwork项目开发中,被大量使用,实现数据查询接口和页面查询列表的量产开发 。它以一个JSON配置文件为中心,来实现对通用数据源的查询,并将查询结果以API或页面的形式自动返回给用户 。整个过程中几乎没有代码开发,而唯一要做的只是以一种统一的规范编写配置文件(而不是代码),真正实现了对数据查询需求的功能量产 。
文章插图
以上是通用列表组件的构建过程,要实现这样一个功能强大的通用组件,是不是会给人一种可望而不可及的感觉?其实并非如此,只要理清了它的整个过程,将构建思路融入Golang中,并不是一件复杂的事情 。在我们的项目中,整个组件的实现,只用了不到700行Go代码,就解决了一系列的数据查询问题 。另外,通过Golang的并发特性,实现字段处理器的并行执行,进一步的提高了组件的执行效率 。可以说,通用列表和Golang的融合,是性能和效率的完美结合 。
文章插图
通用表单组件主要用于对数据库的增、删、改场景 。该组件在Uwork的项目开发中,也有广泛的应用,与通用列表类似,以一个JSON配置文件为中心,来完成对数据表数据的增、删、改操作 。特别是近期完成的部件级SDB管理平台,通过通用表单实现了对整个系统的数据维护,通过高度抽象化,做到了业务的无代码化生产 。
文章插图
以上是通用表单的完整构建过程,而对于这个一个组件的实现,我们用了不到1000行的GO代码,就解决了对数据表数据维护整个面上的问题 。
文章插图
GO语言本身支持协程并发,协程非常轻量,可以快速启动成千上万个协程工作单元 。如果对协程任务的数量控制不当,最后的结果很可能适得其反,从而对外部或本身的服务造成不必要的压力 。协程池可以在一定程度上控制执行单元的数量,保证执行的安全性 。而在Golang中要实现这样一个协程池,是非常简单的,只需要对channel和goroutine稍加封装,就可以完成,整个构建过程不到80行代码 。
文章插图
在API开发过程中,数据校验永远是必不可或缺的一个环节 。如果只是简单的数据校验,几行代码也许就完成了,可是当遇上复杂的数据校验时,很可能几百行的代码量也未必能完成,特别是遇到递归类型的数据校验,那简直就是一个噩梦 。
数据校验组件,可以通过一种数据模板的配置方式,使用特定的逻辑来完成通用校验,开发者只需要配置好相应的数据模板,进行简单的调用,即可完成整个校验过程 。而对于这样一个通用性的数据校验组件,在GO语言中只用了不到700行的代码量就完成了整个构建 。
小结
文章插图
在实际项目开发过程中,对开发效率提升最大的,无疑是符合系统业务场景的公共组件能力,这点也正好应证了Rob Pike那句话(Less is lessor Less is more),真正的高效率开发,是配置化的,并不需要写太多的代码,甚至根本就不需要写代码,即可完成逻辑实现,而这种方式对于后期的维护成本也是最优的,因为做到了高度的统一 。
推荐阅读
- 羊奶皂的功效与作用
- 淘宝c店是什么店 淘宝店铺为什么叫c店
- 世界名画雨中的女人 世界名画下雨天女人
- 7种让你从背叛中愈合的明智方法
- 金螺滇红的功效,往下看就知道了!
- 滇红茶的一些奇妙功效,知道吗?
- 这几类人最招蚊子!你们都不知道吧
- 细数电吹风治病疗效你知道几个?
- 滴眼药水,这么滴绝对让你双目失明
- 翡翠|翡翠的应用越来越广泛,同时价值也在上升,所以要知道怎么鉴定