之前度过这本书作者之前的《代码整洁之道》,学习了一些概念。但是这本书相对于那本书阅读更加容易理解,感觉收益也更大,对于有些东西,有一种茅塞顿开的感觉。软件架构不是像做菜一样,这个加一点,那个加一点,在一起炒一炒就可以了。架构更像是乐高玩具,可以自由组合,是结构化的,层次化的,模块之间是可以独立存在的。我感觉自己以前在写代码的时候有一些疑惑,在这里找到了答案,同时也学会了以后写代码更应该注意到哪些方面。这本书里面有一些很好的观点,想分享给大家。

框架是个好东西,但你不能依赖它

现在,无论是在前端开发亦或是后端开发以及其它领域,框架的使用已经屡见不鲜。网上也经常有为了哪种框架更优秀而爆发的各种激烈的争论。比如,之前前端框架的 Vue 与 Angular 之争闹得沸沸扬扬,总是有人为了框架的孰优孰劣而喋喋不休。正如书中所说,“框架是工具而不是生活信念”。很显然,框架已经成为了不少人的生活新信念,他们为此乐此不疲地争论着,他们似乎就是要为他们的信念而战斗。诚然,框架为了我们日常的开发带来了巨大的便利。但不可否认的是,框架中解决的问题和概念是依赖于框架的开发者,而不是仅仅针对于你一人。因此,如果你是用的框架,明天开始就不会再维护,那不应该是你的世界末日。框架可以帮助我有效地进行开发,而不是开发依赖于某个框架。这就好比与讨论 golang,java 或者 python 哪一种语言更优秀。我认为这种讨论都是无意义的,任何语言都是有它自己的应用场景的,所以没必要没要说出哪个语言就是最优秀的。

编程范式

主要是三个编程范式,即结构化编程、面向对象编程以及函数式编程。结构化编程是对程序控制权的直接转移的限制。面向对象编程对程序控制权的间接转移的限制。函数式编程是对程序中赋值操作的限制。这里面提到一些有意思的点,封装不仅仅是面向对象编程的特性,C 语言也可以做封装,而且往往做得还很不错。尽管函数式编程最近才名声大噪,但是它确实最早被发明的。另外一点我们需要意识的是,软件构建并没有发生本质的变化,今天的软件构建规则和 1946 年图灵写下电子计算机的第一行代码其实是一样的,虽然语言变化了,硬件的性能变化了,但是软件编程的核心并没有发生变化。

架构师也写代码

很多人对于架构师可能有一种误解,认为架构师高高在上,只要对于项目的框架做一些设计,并不会具体去写代码。但是实际上,架构师实际上就应该还是一个保持 coding 的码农。“软件架构师其实应该是能力最强的一群程序员,他们通常会在自身承接变成任务的同时,逐渐引导整个团队向一个能够最大化生产力方向前进。也许软件架构师成产的代码量不是最多的,但是他们必须不停地承接编程任务。如果不亲身承受因系统设计而带来的麻烦,就体会不到设计不佳所带来的痛苦,接着就会逐渐迷失正确的设计方向。”可以看出软件架构师并不是高高在上,指指点点,他们需要亲自体会糟糕的系统带来的痛苦,他才知道如何去改进。