也未曾想过,重读此书。估计闲了,做下笔记,或感慨。这些年,我也做过一些项目,看起来,真的很糟糕,不是急匆匆上线,就是频繁调整需求。忽略了项目的设计,虽然环境是急躁的,但更多的是自己对项目,对自己的代码不负责的一种表现可能是。遇到实现比较麻烦的部分,往往也是如同书中所说那样,先实现后优化,但到了后面,优化起来,费时费力。而且新需求源源不断,也就得过且过。说是敏捷快发,但,从某种维度上来说,效果挺垃圾,估计是对敏捷的误解吧。程序员的代码,不仅要能正常运行,还需要适应需求的变化,如果无法适应,就会被淘汰。
作为程序员,Bob 大叔的这本著作,应该列为必读。强烈推荐。

架构即设计

开篇,就提出了 架构即设计 的理念,细想,似乎区别不大,对项目进行架构,主要是进行技术选型之类的,过于浅显,显然是种错读。而设计就比较明确,对系统底层组织结构和实现细节的把控。架构就像是设计的雅语而已,但,实际上,架构难道不需要了解系统底层组织结构和实现细节?
大叔提到了软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求,我是没有半点疑惑的,关于这种说法。如果不能降低构建和维护系统的成本,还那么费劲心思架构搞什么呢?如果一个好的设计,可以降低 50% 的成本,你觉得老板会怎么做。
系统可以从两个维度体现实际价值:

  • 行为价值,让机器按照某种指定方式运转,给系统的使用者创造或者提高利润;
  • 架构价值,系统的灵活性,变更实施的难度应该和变更的范畴成等比关系,而与变更的具体形状无关。

如果忽视软件架构的价值,系统将会变得越来越难以维护,终会有一天,系统将会变得再也无法修改。如果系统变成了这个样子,那么说明软件开发团队没有和需求方做足够的抗争,没有完成自己应尽的职责

编程范式

编程范式,主要是指程序的编写模式,与具体的编程语言关系相对较小。

  • 结构化编程,对程序控制权的直接转移进行了限制和规范;
  • 面向对象编程,对程序控制权的间接转移进行了限制和规范;
    • 依赖反转,源代码依赖关系和控制流是相反的。
  • 函数式编程,对程序中的赋值进行了限制和规范。

SOLID原则

SOLID原则主要是指导如何将数据和函数组织成为类,以及如何将这些类链接起来成为程序。

  • SRP,单一职责原则,一个软件系统的最佳结构高度依赖于开发这个系统的组织的内部结构。每个软件模块都有且只有一个需要被改变的理由;
  • OCP,开闭原则,如果软件系统想要更容易被改变,那么其设计就必须允许新增代码来修改系统行为,而非只能靠修改原来的代码;
  • LSP,里氏替换原则,如果想用可替换的组件来构建软件系统,那么这些组件就必须遵守同一个约定,以便让这些组件可以相互替换;
  • ISP,接口隔离原则,在设计中避免不必要的依赖;
  • DIP,依赖反转原则,高层策略性的代码不应该依赖实现底层细节的代码,恰恰相反,那些实现底层细节的代码应该依赖高层策略性的代码。

组件构建原则

组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。

  • REP,复用/发布等同原则(黏合性),软件复用的最小粒度应等同于其发布的最小粒度;
  • CCP,共同闭包原则(黏合性),将由于相同原因而修改,并且需要同时修改的东西放在一起。将由于不同原因而修改,并且不同时修改的东西分开;
  • CRP,共同复用原则(排除性),不要强迫一个组件的用户依赖他们不需要的东西。

开卷有益:架构整洁之道相关推荐

  1. 架构整洁之道, 看这一篇就够了!

    为什么80%的码农都做不了架构师?>>>    阿里妹导读:程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有些知识历久弥新,掌握了它们,你在程序的海洋中就不会迷路,架构思想 ...

  2. 一文读懂架构整洁之道(附知识脉络图)

    程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有一些东西是历久弥新,永远不变的,掌握了这些,在程序的海洋里就不会迷路,架构思想就是这样一种东西. 本文是<架构整洁之道>的读书笔记 ...

  3. 架构整洁之道 pdf_代码有整洁之道,而架构同样有整洁之道

    大家好!我是超级机器人 UltraBot,今天给大家一些值得阅读的开源书籍和项目. Etcd3 学习笔记 etcd 是一个分布式一致性键值存储,用于共享配置和服务发现.etcd 是 Go 编写,并使用 ...

  4. 读书·架构整洁之道(原则篇)

    十四年不修行,只读书,一年通幽.二十日不解碑,只静坐,一日看尽前陵碑 ----- 猫腻<择天记> 一.设计与架构究竟是什么? 二.SOLID设计原则 SRP:单一责任原则(Single R ...

  5. 再读《架构整洁之道》

    时至今日,软件开发技术中最热闹的领域就是前端开发了,各种 xxxScript 语言,各种前端框架,以至于很长时间都没有再听过"面向对象"这种"古老"的词汇了.作 ...

  6. 阿里专家马飞翔:一文读懂架构整洁之道

    淘系技术 马飞翔(泽畔) 读完需要 9 分钟 速读仅需 3 分钟 相信大家都非常清楚,如何编写可读性强的代码是一个合格程序员的必修课.我在之前的文章<谈谈什么是好的代码>中谈了一些自己对整 ...

  7. 高清架构整洁之道PDF下载

    架构整洁之道高清PDF下载,请扫描如下二维码,支付3元.并加微信,发给你.谢谢.

  8. 架构整洁之道学习笔记

    1.设计原则 1.1 SRP 单一职责原则 一个软件系统的最佳结构高度依赖于开发这个系统的组织的内部结构.任何一个软件模块都应该只对某一类行为者负责. 单一职责原则主要讨论的是函数和类之间的关系,但是 ...

  9. 架构整洁之道-学习笔记

    高层架构&底层设计细节 架构"这个词往往使用于"高层级"的讨论中.这类讨论一般都把"底层"的实现细节排除在外.而"设计"一 ...

最新文章

  1. Lumen配置文件按需加载出现的坑
  2. git svn 一个疯(傻)子的想法
  3. 且看微软的.Net和Sun公司的J2EE如何对垒
  4. MED-V桌面虚拟化之二配置Template Server(1)
  5. Angular组件--动态组件
  6. [转]避免PHP-FPM内存泄漏导致内存耗尽
  7. 关于启明星辰IDS无法CONSOLE连接
  8. Quartz.NET快速入门指南
  9. android 开发 切图,Android开发,切图网站推荐。
  10. 矿业公司Aurum对其房东提起法律诉讼,要求收回矿机
  11. C++网络编程实例之多个客户端交互(多线程)
  12. 用R解析Mahout用户推荐协同过滤算法(UserCF)
  13. Windows 下 docker 部署 gitlab ci
  14. Ubuntu 16.04 LTS Final Beta about JAVA
  15. px像素和dp像素密度区别
  16. 请根据以下需求使用决策表设计测试用例
  17. CESIUM例子学习(一)——动态模型加载
  18. 计算机专业课程计划,计算机专业课程表(教学计划)
  19. python从邮箱获取指定邮件_用python提取并统计指定邮箱里的特定邮件 | 学步园
  20. php安装和环境配置

热门文章

  1. 2022-6-2寻宝大冒险(不用前缀和与map,c/c++实测满分)
  2. hdoj4466题解
  3. 基于C语言的G代码解释器,G-Code
  4. 大数据技术(林子雨版)——期末复习知识点
  5. 长安奔奔Mini维修手册
  6. xml文件概述及作用
  7. android终止一个进程的方法,使用ActivityManager的forceStopPackage方法结束进程
  8. Python爬虫——scrapy框架介绍
  9. HDU 4808 Drunk(数学)
  10. adb命令——上传和下载文件