Clean Architecture

Robert C. Martin

出版社

Prentice Hall

出版时间

2017-09-19

ISBN

9780134494166

评分

★★★★★
书籍介绍

Practical Software Architecture Solutions from the Legendary Robert C. Martin (“Uncle Bob”)

By applying universal rules of software architecture, you can dramatically improve developer productivity throughout the life of any software system. Now, building upon the success of his best-selling books Clean Code and The Clean Coder, legendary software craftsman Robert C. Martin (“Uncle Bob”) reveals those rules and helps you apply them.

Martin’s Clean Architecture doesn’t merely present options. Drawing on over a half-century of experience in software environments of every imaginable type, Martin tells you what choices to make and why they are critical to your success. As you’ve come to expect from Uncle Bob, this book is packed with direct, no-nonsense solutions for the real challenges you’ll face—the ones that will make or break your projects.

Learn what software architects need to achieve—and core disciplines and practices for achieving it

Master essential software design principles for addressing function, component separation, and data management

See how programming paradigms impose discipline by restricting what developers can do

Understand what’s critically important and what’s merely a “detail”

Implement optimal, high-level structures for web, database, thick-client, console, and embedded applications

Define appropriate boundaries and layers, and organize components and services

See why designs and architectures go wrong, and how to prevent (or fix) these failures

Clean Architecture is essential reading for every current or aspiring software architect, systems analyst, system designer, and software manager—and for every programmer who must execute someone else’s designs.

Register your product at informit.com/register for convenient access to downloads, updates, and/or corrections as they become available.

Robert C. Martin,Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域的资深顾问。他是Designing Object-Oriented C++ Applications Using the Booch Method 以及 Jolt 获奖图书 Agile Software Development, Principles,Palterns,and Practices(中译版《敏捷软件开发:原则、模式与实践》)《代码整洁之道》等畅销书作者。

译者简介

孙宇聪:曾在谷歌工作多年,任谷歌高级SRE(Senior Site Reliblity Engineer),前Coding.net 技术负责人。

AI导读
核心看点
  • 强调业务逻辑独立于框架、数据库和UI
  • 依赖倒置原则在架构层面的核心应用
  • 架构师需坚持一线编程以体会设计痛点
适合谁读
  • 具备一定工程经验的软件开发者
  • 希望提升代码可维护性的架构师
  • 对SOLID原则有初步了解的程序员
读前提醒
  • 建议结合Clean Code等前作对照阅读
  • 重点理解依赖方向与组件隔离策略
  • 若无实战经验,部分概念可能较抽象
读者共识
  • 观点深刻但部分章节略显啰嗦
  • 是理解整洁架构的入门经典之作
  • 需有项目踩坑经验方能深刻共鸣

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "人渐渐地发现,这个世界上有很多问题就像翘翘板一样,只能要一边,这一边上去了,另边就下来了。就像要么用空间换时间,要么用时间换空间一样,你很难同时满足空间和时间要求的“双利解”;就像CAP的三选二的理论一样,这个世界不存在完美的解方案无论什么方案都有好的一面和不好的一面。而且这些工程师还还渐渐发现,每当引入一个新的技术来解決一个已有的问题时,这个新的技术就会带来更多的问题,问题就像有一个生命体一样,它们会不断地繁殖和进化。"
  • "《架构整洁之道》孙宇聪译,软件架构参考书籍。 第一章 软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求。 软件开发的核心特点:要想跑得快,先要跑得稳。 过度自信只会使得重构设计陷入和原项目一样的困局中。 研发团队最好的选择是清晰地认识并避开工程师们过度自信的特点,开始认真地对待自己的代码架构,对其质量负责。 要想提高自己软件架构的质量,就需要先知道什么是优秀的软件架构。而为了在系统构建过程中采用好的设计和架构以便减少构建成本,提高生产力,又需要先了解系统架构的各种属性与成本和生产力的关系。 第二章 软件系统两个价值维度-----行为价值和架构价值。 软件架构师这一职责本身就应"
  • "软件架构师可以根据相关函数被修改的原因、修改的方式及修改的时间来进行分组隔离,并将这些相互隔离的函数分组整理成组件结构,使得高阶组件不会因低阶组件被修改而收到影响"
  • "这些工程师们普遍用一句话来欺骗自己:“我们可以未来再重构代码,产品上线最重要!”但是结果大家都知道,产品上线以后重构工作就再没人提起了。市场的压力永远也不会消退,作为首先上市的产品,后面有无数的竞争对手追赶,必须要比他们跑得更快才能保持领先。 所以,重构的时机永远不会再有了。工程师们忙于完成新功能,新功能做不完,哪有时间重构老的代码?循环往复,系统成了一团乱麻,生产效率持续直线下降直至为零。"
  • "这就是科学理论和科学定律的特点:它们可以被证伪,但是没有办法被证明。 但是我们仍然每天都在依赖这些定律生活。开车的时候,我们就等于是在用性命担保F=ma是对世界运转方式的一个可靠的描述。每当我们迈出一步的时候,就等于在亲身证明F=Gm1m2/r2是正确的。 科学方法论不需要证明某条结论是正确的,只需要想办法证明它是错误的。如果某个结论经过一定的努力无法证伪,我们则认为它在当下是足够正确的。 当然,不是所有的结论都可以被证明或者证伪的。举一个最简单的不可证明的例子:“这句话是假的”,非真也非伪。 最终,我们可以说数学是要将可证明的结论证明,而与之相反,科学研究则是要将可证明的结论证伪。"
  • "根据上述讨论,我们可以得出一个无法逃避的结论:组件结构图是不可能自上而下被设计出来的。它必须随着软件系统的变化而变化和扩张,而不可能在系统构建的最初就被完美设计出来。"
  • "首先,软件架构师自身需要是程序员,并且必须一直坚持做一线程序员,绝对不要听从那些说应该让软件架构师从代码中解放出来以专心解决高阶问题的伪建议。不是这样的!软件架构师其实应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。也许软件架构师生产的代码量不是最多的,但是他们必须不停地承接编程任务。如果不亲身承受因系统设计而带来的麻烦,就体会不到设计不佳所带来的痛苦,接着就会逐渐迷失正确的设计方向。"
  • "正如我们之前所说,架构师们所追求的目标是最大限度地降低构建和维护一个系统所需的人力资源。那么我们就需要了解一个系统最消耗人力资源的是什么?答案是系统中存在的耦合一一尤其是那些过早做出的、不成熟的决策所导致的耦合。 那么,怎样的决策会被认为是过早且不成熟的呢?答案是那些决策与系统的业务需求(也就是用例)无关。这部分决策包括我们要采用的框架、数据库、Web服务器、工具库、依赖注入等。在一个设计良好的系统架构中,这些细节性的决策都应该是辅助性的,可以被推迟的。一个设计良好的系统架构不应该依赖于这些细节,而应该尽可能地推迟这些细节性的决策,并致力于将这种推迟所产生的影响降到最低。"
目录
Foreword xv
Preface xix
Acknowledgments xxiii
About the Author xxv

显示全部
用户评论
第一本完整读完的 Uncle Bob 的书,思路很清晰,但通篇读下来似乎最重要的还是对依赖的控制。
一定要有工程经验后再来读软件工程相关的书,不然会觉得都是些很教条枯燥的东西。但是亲身参与过项目开发后再来读,会发现很多都是血泪教训。虽然还未能完全体会精髓,但是已经可以初步体会到一些设计模式的意义了。
Dependency Inversion Principal 划重点
Clean Architecture的图是很简单,但是得到这张图以及应用这张图就很难了。Draw boundary这种事情需要人有足够的经验的才行,否则画不好就悲剧了。Clean Architecture有点像高内聚低耦合,domain为内,infrastructure为外。
电子书;网盘;架构与设计;
系统地学习了 clean architecture很有必要。终于弄清楚了啥是 business logic。
看了一个半月你总算看完了,确实启发很大
高屋建瓴。
1. don't depend on what you don't need 2. depend on abstraction,not concrete implemention 3. low-level details depend on high-level policies
interface yyds
收藏