Docs Vault

工欲善其事,必先利其器。在动手编写 Go 代码,实现产品需求之前。你需要充分的理解产品需求、原型设计,并进行大量的技术调研,以确定应用的最佳实现方式。


产品需求很多时候会影响应用架构的实现,所以在设计阶段,开发者一定要跟产品需求对齐需求的每一个细节,跟设计同学确认好,每一个交互细节,以确保我们开发出来的应用,符合产品的预期。这样可避免耗费人力、时间开发完成之后,跟产品预期不一致,导致代码推到重来的巨坑中。


在我的开发生涯中,就遇到过好几次,开发者辛辛苦苦的将功能开发完,或开发到一半,发现产品需求理解有偏差,导致大量返工的情况。


那么如何设计一个合理的软件架构呢?其实没有一个标准的答案。这里我介绍下我的设计思路:综合式创新设计方法。


什么是综合式创新设计方法呢?这不是一个官方的定义,也是我为了描述一个方法,自己杜撰的一个名词。所谓的综合式创新,就是在充分调研行业功能、架构实现之后,结合产品需求、项目要求,进行再创新的一种方法。其实跟上一节课,介绍的架构师思维是一样的。


综合式创新的思路是这样的:在充分理解产品需求、交互设计的前提下,进行大量的技术调研。然后根据调研结果,结合产品需求、项目需求、公司现状、团队现状、个人技术能力、调研结果等,进行统筹考虑、设计。基于调研结果,结合现状,最终设计出一套合理的软件架构,该套软件架构,在你的认知范围内可以理解为是最优解。


要实践综合式创新并不容易,因为他需要你花大量的时间进行技术调研,并充分理解所调研的技术,然后通过不断的思考,对技术体系进行再升华,再创新,从而设计出最优的软件架构。在我看来,综合式创新要点如下:

  1. 全面的调研:如果想设计出行业内的最优软件架构,那么首先,你得保证在行业内,你没有技术盲区。如果想没有技术盲区,最简单粗暴的方式,就是做大量、甚至全量的调研。你的技术触达面有多广,你的软件架构设计对比优势就有多广。在我的项目开发生涯中,稍微大一点的功能特性,我都喜欢做全量的技术调研。例如:我会把 GitHub 上同类的功能实现,全部都调研一遍,然后基于调研结果和个人技术能力,设计出更加合理的软件架构,取众家之长为己所用;
  2. 合理的取舍:在经过全面的调研之后,其实你脑海中会有不同的技术方案实现,这时候你还要结合现状进行取舍。也许最终采用的技术方案不是最优的,但一定是符合现状的最优解。


综合式创新还有个非常有重要的附加价值就是技术积累。日积月累的技术调研,不仅可以提高你的技术能力,还可以丰富你脑海中的代码库,在下次开发时,你完全可以基于脑海中的代码库,快速设计出合理的技术方案,或者快速复用已有的优秀代码实现,从而提高你的开发效率和质量。


在经过充足的调研之后,你应该已经设计出了符合要求的、最优的软件架构。通常来说好的软件架构具有以下特点(你也可以使用以下特点来评估软件架构的质量):

  1. 架构合理:设计出的软件架构应该是合理的,也就是说能够适应当前公司、团队的技术栈和技术环境,并且在人力、开发周期等资源投入上符合预期;
  2. 架构可行:架构应该是能够实现的,而不是很难或者最终证明不可行;
  3. 高扩展:架构应该是易扩展的。随着项目的迭代,应该能够很容易的集成近更多的功能,而不需要对架构进行大改或者重构。
  4. 易维护:架构应该是易维护的,这样可以在未来节省大量的开发成本。


当然了,一个优秀的软件架构应该还有很多其他特性,上面是我觉得比较重要的特性。