Blog

Blog

PHODAL

《架构整洁之道》有感

最近,朋友圈都在晒 Uncle Bob 的新书《Clean Architecture》(中文名《架构整洁之道》)的相关内容,书架上也因此新增了一本书。阅读了之后,倒是产生了一些想法,便想写篇文章记录一下。

编程的年限

与书本身的架构部分的内容相比,这本书最吸、启发我的地方,怕是结尾的 《架构设计考古》相关的故事。编程年限时间越长,经常思考更好的解决方式,能收获到的知识也就越多。如果我们不能决定一个系统的架构,那么就思考、实践如何把它变好。过程中,大抵也是能收获更多的东西,对下一个系统有更多的启发。

不同的编程时期,对于软件架构的看法是不一样的。过去,我们要面对的是,一行行代码构成的面条式代码,系统处于混沌架构的形式。提取、整理、总结出 MVC 架构之后,应用的架构变得明朗。但是,随着时间的增长,又变成臃肿的单体应用。按业务(领域)拆分出代码,拆分出业务模块,变成一个个的服务。到了今天,我们开始提及演进式架构,以变化的心态,应对软件架构带来的变化。

软件架构总是要变的,重要的不是设计出好的架构,而是让架构和开发人员适应变化

从结尾的考古故事里,可以看出:国外的技术人员到底和国内的技术人员,还是有上那么一些差距——对外输出上的差距。90 年代的中国程序员,没能为国内的开发者留下多少经验,这一点倒是颇为遗憾的。一来可能是没有记录下来,很多故事只能从内部知道;二来则是不能持续地记录,随着时间的推移,便被潮流覆盖。Robert C·Martin、Martin Fowler、Joel Spolsky、Jeff Atwood 等知名的程序员,写了大量的技术文章。从这点上来,倒是可以和国内的技术氛围形成了对比。

可一如村上春树在《我的职业是小说家》所讲述的故事,有些富有才华的年轻人,总是 “消逝” 得非常快——是他/她们在这一领域的时间太短了,昙花一现般的职业生涯。若能在一个行业里,持续地提升自己,早晚得是有发光的时候。编程亦是哪些,那些做得最好的,往往是做得最久的。

书评

再回到这本书上,架构也是这样循序渐进出来的。底层的代码,影响了顶层的建筑,便需要一点一滴慢慢从底层关注系统。大体上,我是将这本书分成了两部分:

第一、二部分,资深程序的程序员都会有一定的了解、实践。第三部分,是他最为人所知的 SOLID 原则,他最早出现 15 年前的《敏捷软件开发》等书上。而作为一个接受过 ThoughtWorks OO Bootcamp 训练的学员,我大抵还是能相当熟悉的运用它们。

第四部分,在讲述组件化架构,都是能以 UI 项目,而非后端服务谈论组件化架构,那倒能多得几分。终于在第五部分,开始总结性地介绍软件架构??然后,剩余的部分都在讲代码故事,Uncle Bob 讲述故事的能力,大概是我的好几个数量级。

说到底,还是因为我太年轻了,没能读懂这本书的精髓。看上去像可有可无的大道理,在落地上倒是得自己花时间去考虑。遇到一个架构方面的难题,带上这本书,加上所谓的悟性,或许我的问题就能迎刃而解。要是一看,本书倒是不适合初学者。可是,这本书的叙述方式,又相当的适合初学者。

要是各位对这本书有兴趣,又有些不是甚懂,建议去看看《代码整洁之道》。

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《全栈应用开发:精益实践》

这不是一本深入前端、后台、运维、设计、分析等各个领域的书籍。本书以实践的方式,将这一系列的领域及理论知识结合到一起,来帮助读者构建全栈Web 开发的知识体系,并辅以精益及敏捷的思想,来一步步开发Web 应用:从创建一个UI 原型到编写出静态的前端页面;从静态的前端页面到带后台的应用,并部署应用;从Web 后台开发API 到开发移动Web 应用。在这个过程中,我们还将介绍一些相辅相成的步骤:使用构建系统来加速Web 应用的开发;为应用添加数据分析工具来改进产品;使用分析工具来改善应用的性能;通过自动化部署来加快上线流程;从而帮助读者开发出一个真正可用的全栈 Web 应用。同时,我们也将帮助读者把这些步骤应用到现有的系统上,改进现有系统的开发流程。

comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签