0%

从Go语言的依赖库讲起(0):让我们聊聊如何开发更方便维护的Go语言程序

缘起

今年是Go语言的10年生日,准确的说应该是Go开放于2009年,当时虽然公开了,但是其实真正的可用性并不是很好。甚至Windows的支持都没有。当时我的主要环境还是在Windows平台,因此没有太关注Go语言。在2012年Go语言正式发布1.0版本之后,我当时工作环境转移到了Linux/macOS/iOS相关的产品上,因此重新学习了一下Go语言。

后来在Go的1.3版本发布后,我在支付宝的内部系统中第一次上线了一个基于Go语言的边缘服务,也是第一次将Go语言应用到了实际的生产环境中。后来在云柚科技创业过程中,正式将Go语言作为我们物联网环境的第一优选语言(也基本上是唯一语言),大规模的批量部署Go语言项目和代码。

聊聊如何开发更方便维护的Go语言程序

对Go语言而言,开发似乎是简单的事情:Go本身的语法比较简单,关键词不多,可以快速上手。如果基本功能而言,能采用的花式解法不多,导致Go语言的上手比较简单,对我们创业期间的公司而言,享受到了很多这种方面带来的很多红利:我们工程师基本上都是其他语言/岗位转型过来的全(quan)栈(gan)工程师,他们也为我们业务的快速发展提供了原生的动力。

然而,当我们把时间稍微放长一点,我们会发现当时我们仍旧遗留下了很多历史性的技术债,这些内容包含了我们当时对于代码质量的妥协,由其他语言习惯带过来的洋玩意但有点水土不服,一些过度的设计,一些库选择上和我们后续的最佳实践相违背等等问题。

这里面,一些软性的东西其实我们可以通过一些非编码环节去解决:对开发过的代码要求提供单元测试和开发后的Code Review;在技术开发之前进行沟通,规避可能出现的过度设计问题等等。不过,我想了想,这些更多属于规范性的问题,各个公司自有自身的特色在,那么还有什么内容可以更适合初中级开发一块聊一聊的呢?

那么毫无疑问就是对依赖库的选择。这部分的内容直接与我们在开发过程中会采用的实际最佳实践相关,无论是多人合作项目,还是单枪匹马的开源项目开发,各种依赖库无法避免:它们可以帮我们有效提升开发效率,帮我们落地最佳实践,让我们更快的更高效的完成工作。因此,我打算从这个系列中,一方面去聊聊我们未来会介绍的依赖库的使用;另外一方面,也想通过这个系列,聊聊如何是使用依赖库的过程中,将各种最佳实践一一落地。我们可能会介绍为什么选择这个依赖库,这个依赖库会带给我们的实践会是怎么样的。

不过在这里仍旧提醒一句,这里提到的所有的功能和实践均为在实际项目中总结的内容,部分实践则可根据个人情况进行实际选择。所有的实践并非全部都是最优解,仍需根据实际项目情况进行对应的调整和抉择。

最后,希望你们能够喜欢这个系列。:)