1.书籍信息
封面 | ![]() |
---|---|
书名 | 《代码精进之路:从码农到工匠》 |
作者 | 张建飞 |
状态 | 已读完 |
简介 | 这是一本为专业程序员而写的书,写好代码、追求卓越和工匠精神是每个程序员都应该具备的优秀品质。 本书共有13章内容,主要分为技艺部分、思想部分和实践部分。技艺部分详细介绍了编程技巧和方法论,并配以详尽的代码案例,有助于读者提高编写代码的能力,优化代码质量。思想部分主要包括抽象能力、分治思想,以及程序员应该具备的素养等内容。实践部分主要介绍了常见的应用架构模式,以及COLA架构的设计原理。 |
资源 |
2.书摘
摘录:https://blog.csdn.net/significantfrank/article/details/123267395
关于架构的定义有很多,我最喜欢,也是最简洁的定义是:
即架构是一种结构,是由物件(Components)+ 物件之间的关系 + 指导原则组成的。
我更愿意把Domain层设计成开放的,这种开放性不仅体现在CQRS的时候,App可以绕过Domain层直达Infrastructure;也体现在当你的团队实在hold不住DDD的时候,可以选择退化到老的三层架构。
虽然可以退化,但不应该成为你轻易放弃Domain层的理由。据我观察,很多同学不喜欢DDD,其根本原因还不在于对象之间的转换成本(实际上,这个转换成本也没那么大),而在于他不清楚Domain的职责,不知道哪些东西应该放到Domain里面。一种典型的错误做法是把所有的业务逻辑都放到了Domain层,包括我们上面说的CRUD统统放到了领域层,这样的DDD当然没人喜欢。
把业务逻辑都写进Domain?
我给的方案是“先把App做厚,再把App做薄”。什么意思?就是我们先可以把业务逻辑都写到App里面,在写的过程中,我们会发现有一些业务逻辑,不仅仅是过程式的代码,它也是领域知识(Domain knowledge),应该被更加清晰、更加内聚的表达出来,那么我们就可以把这段代码沉淀为领域能力。
在COLA架构中,我们希望领域(Domain)组件作为核心业务逻辑,最好是纯POJO实现的,这样单元测试就会变得很容易,测试的粒度也是一个函数,运行速度极快。具体的单元测试的写法可以参考13.8.1节中工匠平台的单元测试代码。
12.4.3 ColaMock为了解决集成测试中Mock成本高的问题,我们研发了ColaMock工具。它可以自动帮助我们录制需要Mock的数据,并保存在本地,然后在运行集成测试时,自动进行注入、回放,从而极大地提升集成测试的效率。其工作原理如图12-12所示。
ColaMock主要包括数据自动录制和回放两大功能,其录制原理如下。
(1)ColaMock通过@ColaMockConfig标注需要录制的点,这些点也是回放时需要填充Mock数据的。
(2)然后通过DataRecordListener类监听测试运行情况,将需要录制的数据,按照一定的格式录制到Mock文件中去。
更多关于如何使用ColaMock编写集成测试代码的内容,请参考13.8.2节。
在架构思想上,COLA主张像六边形架构那样,使用端口-适配器去解耦技术细节;主张像洋葱架构那样,以领域为核心,并通过依赖倒置反转领域层的依赖方向。最终形成图12-13的层次关系和依赖关系。
SOLID是5个设计原则开头字母的缩写,其本身就有“稳定的”的意思,寓意是“遵从SOLID原则可以建立稳定、灵活、健壮的系统”。5个原则分别如下。·Single Responsibility Principle(SRP):单一职责原则。·Open Close Principle(OCP):开闭原则。·Liskov Substitution Principle(LSP):里氏替换原则。·Interface Segregation Principle(ISP):接口隔离原则。·Dependency Inversion Principle(DIP):依赖倒置原则。
3.读后感 & 点评
先看的cola框架相关部分,看完感觉没说多少啊, 上边的图和最新的有差距(12-13)
看前面的几章,感觉就是概念堆叠,然后具体的举了几个例子(1-6章)
7-9章基本上是讲思想, 推荐了一些好的书,摘录了一些
10章技术人的素养 , 11章 技术leader的素养 还可以, 比较实际些