架构整洁之道 - 罗伯特 C. 马丁
架构整洁之道 - 罗伯特 C. 马丁
程序员朱永胜元数据
[!abstract] 架构整洁之道
- 书名:架构整洁之道
- 作者:罗伯特 C. 马丁
- 简介:《架构整洁之道》是创造 “Clean 神话 “ 的 Bob 大叔在架构领域的登峰之作,围绕 “ 架构整洁 “ 这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。本书分为 6 部分,第 1 部分纲领性地提出软件架构设计的终极目标,描述软件架构设计的重点与模式;第 2~4 部分从软件开发中三个基础编程范式的定义和特征出发,进一步描述函数、组件、服务设计与实现的定律,以及它们是如何有效构建软件系统的整体架构的;第 5 部分从整洁架构的定义开始,详细阐述软件架构设计过程中涉及的方方面面,包括划分内部组件边界、应用常见设计模式、避开错误、减少成本、处理特殊情况等,并以实战案例将内容有机整合起来;第 6 部分讲述具体实现细节;附录则透过作者数十年的软件从业经历再次印证本书的观点。
- 出版时间:2018-09-01 00:00:00
- ISBN:9787121347962
- 分类:计算机 - 计算机综合
- 出版社:电子工业出版社
- PC 地址:https://weread.qq.com/web/reader/480322f072021a3248038c8
高亮划线
第 1 章 设计与架构究竟是什么
📌 软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求。
⏱ 2023-12-10 01:27:52 ^33692210-59-1663-1697
📌 这种系统一般都是没有经过设计,匆匆忙忙被构建起来的。然后为了加快发布的速度,拼命地往团队里加入新人,同时加上决策层对代码质量提升和设计结构优化存在着持续的、长久的忽视,这种状态能持续下去就怪了
⏱ 2023-12-10 01:29:21 ^33692210-59-3434-3530
📌 过度自信只会使得重构设计陷入和原项目一样的困局中。
⏱ 2023-12-10 01:30:40 ^33692210-59-7102-7127
第 2 章 两个价值维度
📌 如果某程序可以正常工作,但是无法修改,那么当需求变更的时候它就不再能够正常工作了,我们也无法通过修改让它能继续正常工作。因此,这个程序的价值将成为 0。如果某程序目前无法正常工作,但是我们可以很容易地修改它,那么将它改好,并且随着需求变化不停地修改它,都应该是很容易的事。因此,这个程序会持续产生价值。
⏱ 2023-12-10 01:32:03 ^33692210-60-2422-2603
第 3 章 编程范式总览
📌 结构化编程对程序控制权的直接转移进行了限制和规范。
⏱ 2024-07-04 23:45:47 ^33692210-62-1166-1191
📌 面向对象编程对程序控制权的间接转移进行了限制和规范。
⏱ 2024-07-04 23:46:43 ^33692210-62-1671-1697
📌 函数式编程对程序中的赋值进行了限制和规范。
⏱ 2024-07-04 23:47:07 ^33692210-62-2117-2138
第 4 章 结构化编程
📌 事实上,Dijkstra 很早就知道将这些控制结构与顺序结构的程序组合起来很有用。因为在两年前,Bohm 和 Jocopini 刚刚证明了人们可以用顺序结构、分支结构、循环结构这三种结构构造出任何程序。这个发现非常重要:因为它证明了我们构建可推导模块所需要的控制结构集与构建所有程序所需的控制结构集的最小集是等同的。这样一来,结构化编程就诞生了。
⏱ 2024-07-04 23:49:39 ^33692210-63-2332-2530
📌 这就是科学理论和科学定律的特点:它们可以被证伪,但是没有办法被证明。
⏱ 2024-07-04 23:52:26 ^33692210-63-5090-5124
第 5 章 面向对象编程
📌 通过采用封装特性,我们可以把一组相关联的数据和函数圈起来,使圈外面的代码只能看见部分函数,数据则完全不可见。
⏱ 2024-07-04 23:54:59 ^33692210-64-1532-1586
📌 我们很难说强封装是面向对象编程的必要条件。而事实上,有很多面向对象编程语言 [插图] 对封装性并没有强制性的要求
⏱ 2024-07-04 23:56:40 ^33692210-64-3057-3211
📌 面向对象编程在应用上确实会要求程序员尽量避免破坏数据的封装性。但实际情况是,那些声称自己提供面向对象编程支持的编程语言,相对于 C 这种完美封装的语言而言,其封装性都被削弱了,而不是加强了。
⏱ 2024-07-04 23:56:58 ^33692210-64-3241-3334
📌 早在面向对象编程语言被发明之前,对继承性的支持就已经存在很久了。
⏱ 2024-07-04 23:57:51 ^33692210-64-4567-4599
📌 虽然面向对象编程在继承性方面并没有开创出新,但是的确在数据结构的伪装性上提供了相当程度的便利性。
⏱ 2024-07-04 23:58:24 ^33692210-64-4834-4882
📌 UNIX 操作系统强制要求每个 IO 设备都要提供 open、close、read、write 和 seek 这 5 个标准函数。[插图] 也就是说,每个 IO 设备驱动程序对这 5 种函数的实现在函数调用上必须保持一致。
⏱ 2024-07-04 23:58:59 ^33692210-64-5806-5987
📌 面向对象编程就是以多态为手段来对源代码中的依赖关系进行控制的能力,这种能力让软件架构师可以构建出某种插件式架构,让高层策略性组件与底层实现性组件相分离,底层组件可以被编译成插件,实现独立于高层组件的开发和部署。
⏱ 2024-07-05 00:06:40 ^33692210-64-11765-11870
读书笔记
第 3 章 编程范式总览
划线评论
📌 结构化编程 (structured programming)、面向对象编程 (object-oriented programming) 以及函数式编程 (functional programming) ^280435523-7SrsNnUye
- 💭 编程范式
- ⏱ 2024-07-04 23:45:15