架构整洁之道 (孙宇聪)(Z-Library)
Author: 孙宇聪
移动
《架构整洁之道》是创造“Clean神话”的Bob大叔在架构领域的登峰之 作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景, 涵盖软件研发完整过程及所有核心架构模式。本书分为6部分,第1部分纲领 性地提出软件架构设计的终极目标,描述软件架构设计的重点与模式;第2 ~4部分从软件开发中三个基础编程范式的定义和特征出发,进一步描述函 数、组件、服务设计与实现的定律,以及它们是如何有效构建软件系统的整 体架构的;第5部分从整洁架构的定义开始,详细阐述软件架构设计过程中 涉及的方方面面,包括划分内部组件边界、应用常见设计模式、避开错误、 降低成本、处理特殊情况等,并以实战案例将内容有机整合起来;第6部分 讲述具体实现细节;附录则透过作者数十年的软件从业经历再次印证本书的 观点。 对于每一位软件研发从业人员——无论从事的是具体编码实现、架构设 计,还是软件研发管理,本书都是不可或缺的。
📄 File Format:
PDF
💾 File Size:
14.2 MB
5
Views
0
Downloads
0.00
Total Donations
📄 Text Preview (First 20 pages)
ℹ️
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
📄 Page
1
(This page has no text content)
📄 Page
2
架 洁 Clean Architecture [ ]Robert C.Martin 著 孙 聪 译 电 ⼯业 Publishing House of Electronics Industry 北 ·BEIJING
📄 Page
3
内 简 《架 洁 》是创 “Clean 话”的Bob⼤叔在架 领域的 作,围绕“架 洁”这⼀重 导向, 统地 其缘起、内 应⽤场 , 盖软件研发 过程 有 架 模式。 书 为6 , 1 纲领性地提 软件架 设计的终 ⽬标,描 软件架 设 计的重点 模式 2〜4 软件开发中三 基础编程范式的 义 和 征 发,进⼀ 描 、组件、服务设计 实现的 律, 们是 何有 软件 统的 体架 的 5 洁架 的 义开 ,详细阐 软件架 设计过程中 的 ⾯⾯, 括划 内 组件边界、应⽤常⻅设计模式、 开错误、 成 、处理 情 况等, 实战 内 有机 起来 6 讲 体实现细 节 附录则 过作者 ⼗年的软件 业经历再 证 书的观点。 对于 ⼀ 软件研发 业 员—— 论 事的是 体编码实现、 架 设计,还是软件研发 理, 书都是不可或 的。 Authorized translation from the English language edition,entitled Clean Architecture,1st Edition,ISBN:0134494164 by Robert C.Martin,published by Pearson Education,Inc,Copyright © 2018 Pearson Education,Inc.All rights reserved.No part of this book may be reproduced or transmitted in any form or by any means,electronic or mechanical,including photocopying,recording or by any information storage retrieval system,without permission from Pearson Education,Inc. CHINESE SIMPLIFIED language edition published by PUBLISHING HOUSE OF ELECTRONICS INDUSTRY,Copyright©2018. 书简体中 专有 由Pearson Education ⽣ 团 授予电 ⼯业 。未经 者预先书⾯许可,不得 任何 式 制或 袭 书的任何 。
📄 Page
4
书简体中 贴有Pearson Education ⽣ 团 光 伪 标签, 标签者不得销 。 贸易 同 记 图 01-2017-7530 图书在 编⽬(CIP) 据 架 洁 /( )罗伯 ·C.⻢丁(Robert C.Martin)著 孙 聪译.—北 电 ⼯业 ,2018.9 书 Clean Architecture ISBN 978-7-121-34796-2 Ⅰ.①架… Ⅱ.①罗…②孙… Ⅲ.①软件设计 Ⅳ.①TP311.1 中国 图书馆CIP 据 (2018) 168309 策划编辑 张 ⾬ 责任编辑 付 刷 三河 远 务有 司 订 三河 远 务有 司 发⾏ 电 ⼯业 北 万 路173 箱 邮编 100036 开 787×980 1/16 张 22 394千 2018年9⽉ 1 2018年9⽉ 1 刷 99.00元 凡 购买电 ⼯业 图书有 损问题,请向购买书 调换。 若书 ,请 发⾏ 联 ,联 邮购电话 (010) 88254888,88258888。
📄 Page
5
质量 诉请发邮件 zlts@phei.com.cn,盗 举报请发邮件 dbqq@phei.com.cn。 书 询联 式 010-51260888-819,faq@phei.com.cn。
📄 Page
6
⼀ 在我 ⾥,程 员可 为三 层 程 员、⼯程师和架 师。 程 员是编 代码的 。编 代码的 式有 , 让 程 跑起来, 正 地处理业务 程和对 据进⾏计算, 可 说“ 编 代码”。程 员需 悉 程 的逻辑 处理过程,需 悉程 语 的 性,还需 悉⼀些计算机操作 统的 调⽤ 式, ⽤户侧 , 据和业务逻辑处理,再 计算机 统 的代码,有 地把⽤户 、 据、业务和计算机串联和拼 来。 ⽽,其中⼀些程 员发现, 让代码跑起来是不 的, 为这 界是不 变 的,他们发现⾃⼰需 更 的时间来维护代码 加 的需 ,扩 有的 程, 已有的功 ,优 性 ……⼀ 维护不过来,还需 更 的 ,于是代码还需 在不同 间轮转 他们发现代码 需 跑起来,还需 易读、易扩 、易维 护, 可 重⽤。于是,这些 使⽤各种各样的⼿ 和技术不 提 代码的易读性、可扩 性、可维护性和重⽤性。我们把这些有 “洁 ”、有⼯ 精精、有 的程 员 作⼯程师,⼯程师不仅仅是 在编 代码,他们 ⽤⼯程的 来编 代码, 便让编程开发更为 和快 。他们把编程当成⼀种设计,⼀种⼯业设计,把代码模块
📄 Page
7
,让这些模块可 更 易地 拼 和组织,让代码 —— 阅读和维护这些代码 看阅 式⼀样 畅快。 但是故事还 ,这些拥有⼯ 精 的⼯程师们还是难 决某 些问题,这些 渐渐地发现,这 界上有 问题 翘翘 ⼀ 样, ⼀边,这⼀边上 ,另⼀边 下来 。 ⽤ 间 换时间, ⽤时间换 间⼀样,你 难找 同时满⾜ 间和时间 的“双利 ” CAP的三选⼆的理论⼀样,这 界不 在 的 决 , 论什 都有 的⼀⾯和不 的⼀⾯。⽽且,这些 ⼯程师还渐渐发现, 当 ⼀ 的技术来 决⼀ 已有的问题 时,这 的技术 带来更 的问题,问题 有⼀ ⽣ 体⼀ 样, 们 不 地 和进 。渐渐地,他们发现,问题的 和 统的 杂 呈正 ,⽽且不仅是线性正 ,还可 呈级 正 ,此时 来 难做技术决 。但是有⼀些资 的⼯程师开 来挑战这 些问题,有的基于业务 给 平 的 ,有的开 尝试设计更 级的技术,有的开 设计更 活的 统,有的则开 简 和轻量 统……这些 智 、经验⾜、不怕难的⼯程师们 领 ⾏业 前⾏。他们 是架 师 觉Bob⼤叔的 著作 也在⾛这 过程,《代码 洁 》 你 易读、可扩 、可维护、可重⽤的代码,《代码 洁 程 员的职业 》 你 样变成⼀ 有 的程 员,⽽《架 洁 》基 上是在描 软件设计的⼀些理论知识。《架 洁 》⼤体 成三 编程范式(结 编程、⾯向对 编程和 式编程),设计 则(主 是SOLID), 软件架 (其中讲 的内 )。总体来说,这 书中的内 可 让你 观(代码层⾯)和 观(架 层⾯)两 层⾯对 软件设计有⼀ ⾯的 。
📄 Page
8
但是, 果你想 这 书⾥找 ⼀些可 ⻢ 决 体问题的⼯ 程架 和技术, 怕你 失 。这 书中更 的是⼀些基础的理 论知识,看 你可 较“ ”, 为这些基础知识对于⽣活在 这 发 的喜欢快 的 中的 来说,可 难理 其中 的 值——⼤ 的⽬标不是设计 ⼀ 优质的软件或架 ,⽽是 快 地 决⼀ 体的问题, 成⾃⼰的⼯作。 ⽽,可 有你 过⾜ 的 ,掉过⾜ 的 ,经历过⾜ 的 苦 ,再来读这 书时,你 发现 书中的这些“陈旧的知识”是 满智 。⽽ 且, 果有⼀ ,你 我这 ⽼ ⼀样,看 司和 年轻的程 员还在不 地掉 和挣扎,你 明⽩这些知识的重 性 。 我 觉得,这 书是架 ⾯的 ⻔级读物,但也 不 经 验不⾜的 员 习,这 书更 的读者群是,有3〜5年编程经验、 需 ⻔软件设计和架 的⼯程师或程 员。 ,我想 下⼀ 观点和⼀组问题。 观点 论是 观 界的代码,还是 观层⾯的架 , 论是三 种编程范式还是 服务架 , 们都在 决⼀ 问题—— 制和 逻辑。 谓 制 是对程 转的 业务逻辑 的代码或 统的 制( 线程、 、服务发现、 署、弹性伸缩等), 谓逻辑则 是实实在在的业务逻辑,是 决⽤户问题的逻辑。 制和逻辑 成 体的软件 杂 ,有 地 制和逻辑 让你的 统得 ⼤的 简 。 问题 果你 成为⼀ 架 师,你需 明 地 ⼏组词语 ( 何 们正是 给你的问题),否则你不可 成为⼀ 格的 ⼯程师或架 师。这⼏组词语是简单vs.简 、平 vs. 协、 代
📄 Page
9
vs.半成品。 果你不 地 义 其中的 别,那 你 难 做 正 的决 ,也 不可有成为⼀ 优 的⼯程师或架 师。 我相 这 观点和这组问题 有助于你更 地阅读 理 这 书,也 让你进⾏更 的思 ,带 思 读这 书, 让你 更 陈皓 (@左⽿ 耗 )
📄 Page
10
⼆ 久远的 诲,古⽼的智 果让你 ⼿⼀ 不稳 但 紧的在线 统,这 统还有各种 问题 变量 常 , 赖逻辑错综 杂,层 结 乱七 糟, 署 程⼀ 糊 ,监 统⼀⽚ ⽩……你该 办 前⼏年我 这种问题,我对 频发的故 细观 ,发现 键的问题 果 不动,这 统的 功 还是相对稳 的,但经常 有⼀些 围需 开发,这时由于 有的 赖逻辑和层 结 不 , 导 “牵⼀发⽽动 ”的情况,加上测试不 , ⼏乎 围功 上线更 , 功 都 受 响, 重 ⼏ “调试→ 正→上线”的 程。 办 ⼤ 说 办 把单元测试都补 ,重 代码 功 和 功 , 业务 谈暂 需 ……这些办 都 对, 但是,都需 时间 ⻅ ,⽽我们 的 是时间。 我提 ⼀ “笨”的办 把 有“共 变量”都抽 Redis中进⾏ 读 ,消灭 地副 , 把稳 程 署⼏ ,这样 可 动⼏ 实 , 这些实 标记为AB两组。同时,在前⾯ 代理 服务,⽤于 请 —— 功 请 配 A组(程 基 不更 ), 围功 请 配 B组(程 业务需 更 )。这样做看 起来有点 此⼀举——AB两组都 有 代码提供服务,⽽且 过
📄 Page
11
Redis共 状态,但是 实现 论B组的程 何更 ,都不 响 A组 载的 服务的⽬的。 虽 当时不 说“ 这样玩呢”,但 实有 。当 署,当 ⽣ ,在线服务 稳 下来, 便 开发的 围功 有问 题, 服务也不受任何 响。这样业务 员满 ,开发 员也可 对 统做 。 来有不 问我是 想 这 办 的, 是 为我是 ⽼程 员,成⻓在⾯向对 的年代, ⽤SOC( 点 )、SRP (单⼀职责 则)、OCP(开闭 则)这些东 对我来说 同 。 体 这 , 是识别 点、 责任、保持 点的封闭⽽已。 来我 知 ,我提 的这 有 专⻔的 “蓝绿 署”。当 我⾃认是 ⽼程 员,不懂这些 鲜 也不 紧。 实, 不 程 员已经不认识SOC、SRP、OCP、LSP等“古⽼”的玩 ,⼤ 悉的是各种语 、 库、 架、代码托 。 联 开发场 千变万 ,技术⼀⽇千⾥,⽽⾯向对 在不 的脑 ⾥早 是 不⽤的⽼古董 。 有“⽼⼀辈”的程 员还记得那些古⽼的 诲, 那些古 的技 。但是这些东 ,总有⼀ 时代 吗 实际上,这也是我 读《架 洁 》的疑惑。虽 Bob⼤叔 这 对我们这些“⽼程 员”来说可谓 雷贯⽿, 前针对⼀ 性 软件开发 著的《代码 洁 》和《代码 洁 程 员的职业 》也 实 受欢 ,但 架 ,还 结 编程、⾯向对 编程、 式编程 起,还 时间 释SRP、OCP、LSP等 则,实在 难掩“古⽼”的 觉。请问, 们和 的“架 ”有什 吗
📄 Page
12
不过, 果你耐 读下 发现,还 有 。 照Bob⼤叔 的说 , 谓架 是“⽤ ⼩的 ⼒成 来满⾜ 和维护 统需 ”的设计⾏为。 前的⾯向对 统和 的 布式 统,在这⼀点 上是 ⼀ 的。 久远的 诲,尊重古⽼的智 , 的架 师 也 中受 。不 我们 经典的三 编程范式来举 ,看看这 些“⽼掉 ”的玩 ⼉和 的架 设计有什 联。 ⼤ 对结 编程的⼀ 理 是,由if-else、switch-case 的语 句组织程 代码的编程 式, 杜绝 goto导 的 乱。但是 更 的层 上看, 也是⼀种设计范式, 使⽤goto,使⽤if-else、 switch-case 制语句和 、 组织起来的程 代码,可 保证程 的结 是 的,⾃顶向下层层细 ,消灭 杂错,杜绝 。 联 的 布式 统,我们在设计的时 , 的 做 ⾃顶 向下层层细 吗 有 ,我看 的 统设计图⾥, 有“层 ”的 ,各 模块 有⼀ 的层 划 , 统 的不是 统,⽽是⼀盘散 式的 ⼝, ⼝ 间 调、 乱成⼀团 的情况也时常 现,带来的 是维护和调试的噩 。 散历史的 雾,不正是古⽼的goto 阱的再现吗 ⼤ 对⾯向对 编程的⼀ 理 是,由封 、继 、 态三种 性 持的, 、 ⼝等若⼲ 的编程 式。但是 更 的层 上看, 也是⼀种设计范式。 态⼤ 算其中 奇的 性 ,程 员在 ⼝时做 抽 ,代码 可 活, 情况时, ⼀ 实现 可 缝对 。 联 的 布式 统,我们在设计的时 , 的 做 ⼝ ⾜ 抽 、 模块 缝对 吗 有 ,我看 ⼝的设计 常 , ⼝不是基于⾏为⽽是基于 场 的实现, 有做 当的抽
📄 Page
13
,也 有为未来预 间, 导 约僵硬 。 ⼀种终 呈现形式, 内 ⽣产 程 ⼤动⼲⼽,这样的 不 ⻅。抹 历史的尘 ,这不正是“ 态” 现 前的 吗 ⼤ 对 式编程的⼀ 理 是, 为基 单元, 有变量 (更 地说是不 重 赋值)也 有副作⽤的编程 式。但是 更 的层 上看, 彻 可变性,变量或者状态默认 是不可变 的, 果 变 ,则必须经过 理设计的专⻔机制来实现。 , 也 锁、状态冲 等 烦。 联 的 布式 统,我们在设计的时 , 的 彻 可变性、 状态冲 吗 有 ,我看 状态或变量的 ⼝ ⼤ 暴露, 不经 (或者恶 ) ,导 奇怪的故 。Bob⼤叔 举 ⼀ 相当有 的 , 果 保证操作 性 精 还 各时 的状态,有 办 是这样的 提供CR操作,⽽不提供 的 CRUD操作( MySQL的binlog那样)。平时 加操作记录 可,各时 的状态永远 过重 前的操作记录得 ,这样 彻 状态的错乱。这 办 看起来古怪,但我 的在 前的开发中⽤ 过(当 是在程 ⽣ 周期有 的场 下),⽽且 的 过错。 坦⽩说,看 《架 洁 》这 书,我 ⾥ 受点 。 为 我发现,我们这些⽼程 员的知识其实 有过时, 不 光鲜的架 其实 决的还是那些古⽼的问题。 Bob⼤叔的 ⼿点拨, 我 时 , 受 “重 发现智 ”的 。 当 ,架 设计是⼀⻔ 杂的 问, 综 虑编码、质量、 署、发布、 维、 、升级等等各种 ,做 。 消 是, Bob⼤叔的这 书覆盖⾯ , 各 ⾯,相 你认 读 书⼀ 和我⼀样有不⼩的 获。 ⼀的问题是,你 应这 ⽼程 员
📄 Page
14
的⼝吻和节 他当 也 ⾏的打⻋ 统做 ,但他更 悉的还是链 器、C语 、UML图等玩 。 不过我觉得,这都不是⼤问题。看得 间的 赖 不 理,⾃ 易发现 统 间的 赖 不 理 得懂UNIX 何 义 ⽤的IO设备,⾃ 易想 对PC Web、Mobile Web、App内 的⻚⾯做 当抽 认得 各线程、进程、链 库的职责,⾃ 易 明⽩ 服务也需 边界调⽤。更 的是, 这种古⽼的视⻆看 问题, 更 摆脱细节的 扰,把 问题的 。 ⽼ 说的那 样 ⼤国 ⼩鲜。 ,对 ,“ ⼤国 ⼩鲜”也是久远的 诲,也 古⽼的 智 。 晟 “ 晟 为”(yurii-says)作者 现在 江 团担任平 架 负责
📄 Page
15
软件架 (architecture) 是什 不论 ⻆ 软件 统,都不可 ⾯⾯俱 。 果 架 ⻆ 来 ,在⼀ 程 上 做 ⼤ ⼩,把 重点,但是 也不可 地 错失某些重 的细节 。 软件架 的的⼀ 重点是组织结 (structure)。不 是讨 论组件(Component)、 (Class)、 (Function)、模块 (Module),还是层级(Layer)、服务(Service) 观 观的 软件开发过程,软件的组织结 都是我们的主 点。但是 实 界中的许 软件项⽬ 不 照我们的 和 ⽣⻓—— 们 超⼤型国 那样,层层 ,缠绕成⼀团乱 [1]。有的时 的 难相 ,软件项⽬的组织结 性也 物理 筑那样⼀⽬ ,层 。 物理 筑,不 其地基是⽯头还是 泥,形状是 ⼤还是宽阔, ⻛格是⽓势 还是⼩ 珑,其组织结 都⼀⽬ 。物理 筑的 组织结 必须 “受重⼒”这⼀⾃ 规律,同时还 符 筑材料⾃ 的物理 性。软件项⽬则 有 律可 。另 ,物理 筑是⽤ 砖头、 泥、⽊头、钢铁或者玻 等标 材料 成的,⽽⼤型软件项 ⽬ 是由⼩的软件组件 成的,这些软件组件 是由更⼩的软件组 件 成的,层层 , 穷 尽。
📄 Page
16
,当讨论软件架 时, 别 软件项⽬是 有递归 (recursive)和 形(fractal) 点的, 终都 由⼀⾏⾏的代码组 成。脱 ⼀⾏⾏的代码,脱 体的细节设计,架 设计 谈起。⼤型物理 筑 常可 ⽤ 模型 层描 细节 ,但是软 件项⽬内 结 是 难⽤模型 层描 的。软件项⽬也 有内 结 ,但是其结 论 量上还是 样性上来说,都远远超过 物理 筑的结 。可 不 张地说,软件开发 物理 筑需 更⻓、 更专 的设计过程,软件架 师应该 筑架 师更懂架 模型是 的 ⽰ 式,但是不 某 PowerPoint图 中的彩 块 看, 简单易懂, 也 代 ⼀ 软件 的架 。 是该软件的架 的⼀ 视图,⽽ 。软件的架 有固 的 现形式,你 看 的 ⼀ 视图的背 都是架 师 做的层层抉择。⼀ 视图 些 , 些 ⽤ 形状和颜 调 些 , 有 些 地⼀笔带过, 略,这些都是这 视图 的 性。 ⽽, 视图都是对 的, 们 有优 。[2] 虽 软件 地⽤ 模型 ⽰,但 还是 在现实 界中 ⾏的。在设计软件架 的过程中,我们必须理 和 现实的约束 件。CPU 和 络带宽 在 ⼤程 上决 统的性 ,⽽ 内 和 储 间的⼤⼩也 ⼤幅 响代码的设计野 。 ⼠,这 是爱情的穷 恶 处, 的 是 穷的,⽽实际 ⾏动 处处受 。 的 是 ⽌ 的,⾏为 不得不 现实的 制。 —— · ⼠ 亚[3] 的 经济活动都是 在于现实 界中的, 我们可 利 ⽤现实 界的⼀些 则来 量和 理软件开发过程中那些不 量 和
📄 Page
17
物 的 。 软件架 是 统设计过程中的重 设计决 的 ,可 过变 更成 来 量 设计决 的重 程 。 ——Grady Booch 需 付 的时间、 钱和 ⼒成 是 软件架 规模⼤⼩的 量标 ,也可 ⽤来 架 设计和细节设计。同时,我们还可 据这 来 某 架 设计是 还是坏 ⼀ 的架 ,不 仅 在某⼀ 时 满⾜软件⽤户、开发者和 有者的需 ,更 在 ⼀ 时间内持续满⾜他们的 续需 。 果你觉得 架 的成 ,那你可 试试选择 的架 加上 ⼯重来的成 。 ——Brian Foote 和 Joseph Yoder ⼀ 统的常规变更不应该是成 的,也不应该需 难 决 策的⼤型设计调 ,更不应该需 单独 项来 进。这些常规变更应 该可 ⽇或者 周的⽇常 统维护中 成。 我们 预知某 统未来的变更需 , 便提前做 备 呢 我们 在 有 晶 时光 机的情况下,未⼘先知, 未来的变更成 呢 谓软件架 , 是你希 在项⽬⼀开 做对,但是 不⼀ 做得对的决策的 。 ——Ralph Johnson 历史已经 难 ,我们对现实的认知也不 可 ,预 未来 更难 。 这 是不同的软件开发理论的主 点。 其中⼀ 较 观阴 的路线认为, 有 和刚性 带来 壮 稳 。 果某项变更成 ,那 应该 视 ——变更背
📄 Page
18
的需 应该 制, 应该 丢 僚主义的⼤机器中 绞 。架 师的决 永远是 的、彻 的,软件架 是 体开发 员的敌托邦噩 (Dystopia),永远是 有 沮丧的 泉。 另 ⼀ 路线则 处 ⼤量的 机性的 ⽤设计。在这样的 软件项⽬中 处都是硬编码的 测性代码, 处是 穷 尽的 , 在 成 牍的 代码。维护这样的项⽬,肯 情 况,⽽且 论预 资 都不 应付。 ⽽ 书试图 的则是⼀ 洁路线。这 路线拥 软件的 活 变性, 其作为 统的⼀级设计⽬标。同时,我们也 认 不 知 晓,但在 不 的情况下 做 优 的决策。 这 路线可 让我们 发挥优势, 开 势。 过实际创 和 , 不 地提 问题和进⾏实验。优 的软件架 不是⼀成不变的, 有 经过不 打 和 进 终成 。 软件架 是⼀ 想, 有 过实际实现和测量 证实。 ——Tom Gilb 这 路线,我们需 ⽤ , 贯 ,不 观 和思 ,在 则指导下不 实 。虽 这可 起来 烦、 ,但是 坚 持⾛下 ⼀ 成功。 ⾛快的 ⼀ 是先⾛ 。 ——Robert C.Martin ⼀起 受这 过程吧 Kevlin Henney 2017年5⽉ [1] 是the-big-ball-of-mud,⻅ https://en.wikipedia.org/wiki/Big_ball_of_mud。——译者
📄 Page
19
[2]这⼀ 的 思是,软件的架 设计是 ⻆ 综 虑的过程。对于 某 软件的架 来说,不 在⼀ 固 不变的视图,也不 在 谓的 佳试图。——译者 [3] ⾃《脱爱勒 克来 》 三幕。——译者
📄 Page
20
前 书的 作《架 洁 》,使⽤这 可谓是⼗ 胆 ⼤, 可 说有点⽬中 。那 ,为什 我 选择 这 书, 且使⽤这 呢 ⾃1964年,12岁的我 下 ⽣的 ⼀⾏代码算起, 2016年, 我已经编程超过50年。在这 时间⾥,我⾃认为 软件 统 的⼀些 —— 且我相 这些 和经验对其他 应该有些 值。 我 习的 是实际 ⼀些⼤⼤⼩⼩的软件 统。我 过⼩型 的 式 统,也 过⼤型的 处理 统 我 过实时 制 统,也 过Web ⻚ 统 我 过 ⾏程 、图形界⾯程 、进 程 理程 、 戏、计费 统、 统、设计⼯ 、 图⼯ 等。 我 过单线程程 ,也 过 线程程 我 过由⼏ 重型进程 组成的应⽤,也 过由⼤量轻型进程组成的应⽤ 我 过 处理 器的应⽤,还有 据库 、 值计算 和⼏何计算 应⽤, 其他 型的应⽤。 回⾸过 ,经历 这 应⽤和 统的 过程,我 的领 悟是 软件架 的规则是相同的 我 的这些 统是千 万别的,为什 有这些 ⼤的 统都 同样的软件架 规则呢 这⾥我得 的结论是,软件架 规则和其他变量 。
The above is a preview of the first 20 pages. Register to read the complete e-book.
Recommended for You
Loading recommended books...
Failed to load, please try again later