笔记《程序员必备的思维能力:抽象思维》

原文

若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽。——大卫·林奇

1.1 什么是抽象

“抽”是抽离,“象”是具象,抽象的过程就是从“具象”事物中归纳出共同特征,“抽取”得到一般化概念的过程。

1.2 抽象和语言是一体的

CodeReview 过程中命名的重要性:
命名的好坏,在很大程度上反映了我们对一个概念的思考是否清晰,我们的抽象是否合理,反应在代码上就是,代码的可读性、可理解性是不是良好,以及我们的设计是不是到位。

1.3 抽象的层次性

抽象的三个特点:
1.抽象是忽略细节的
2.抽象代表了共同性质
3.抽象具有层次性。抽象层次越高,内涵越小,外延越大

1.4 软件中分层抽象无处不在

越是复杂的问题越需要抽象,分层是分而治之,抽象是问题域的合理划分和概念寓意的表单。

1.5 复杂代码是抽象的缺失

复杂代码是典型的代码坏味道,其本质问题就是抽象的缺失。

领域模型训练

我们可以对自己工作中的问题域进行建模,当然也可以通过阅读一些优秀源码背后的模型设计来学习如何抽象、如何建模。比如,我们知道Spring的核心功能是Bean容器,那么在看Spring源码的时候,我们可以着重去看它是如何进行Bean管理的?它使用的核心抽象是什么?不难发现,Spring是使用了BeanDefinition、BeanFactory、BeanDefinitionRegistry、BeanDefinitionReader等核心抽象实现了Bean的定义、获取和创建。抓住了这些核心抽象,我们就抓住了Spring设计主脉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容