这是一本关于软件设计的书:如何将复杂的软件系统分解成模块(如类和方法),以便这些模块可以相对独立地实现。本书首先介绍了软件设计的基本问题,也就是对复杂性的管理。然后讨论了一些在完成软件设计的过程中涉及到的哲学问题,并提出了一系列可以在软件设计过程中应用的设计原则。本书还介绍了一些可用来识别设计问题的危险信号。您可以通过应用本书中的想法来减少大型软件系统的复杂性,以便能更快和更低成本地编写软件。
作者 John Ousterhout 是斯坦福大学的 Bosack Lerner 计算机科学教授。他当前的研究重点是新的软件堆栈层,以允许数据中心应用程序利用具有微秒级延迟的通信和存储技术。Ousterhout 之前的 14 年经历在工业界,并创办了 Scriptics 和 Electric Cloud 这两家公司,再之前的 14 年则是加州大学伯克利分校的计算机科学教授。他是 Tcl 脚本语言的创建者,并且以在分布式操作系统和存储系统中的工作而闻名。Ousterhout 在耶鲁大学获得了物理学学士学位,并在卡内基梅隆大学获得了计算机科学博士学位。他是美国国家工程院院士,并获得了无数奖项,包括 ACM 软件系统奖、ACM Grace Murray Hopper 奖、美国国家科学基金会总统年轻研究者奖和 UC Berkeley 杰出教学奖。
- 前言
- 第 1 章 介绍
- 第 2 章 复杂性的本质
- 第 3 章 能工作的代码是不够的
- 第 4 章 模块应该是深的
- 第 5 章 信息隐藏和信息泄露
- 第 6 章 通用的模块是更深的
- 第 7 章 不同的层级,不同的抽象
- 第 8 章 下沉复杂性
- 第 9 章 在一起更好还是分开更好?
- 第 10 章 通过定义来规避错误
- 第 11 章 设计两次
- 第 12 章 不写注释的四个借口
- 第 13 章 注释应该描述代码中难以理解的内容
- 第 14 章 选取名称
- 第 15 章 先写注释
- 第 16 章 修改现有的代码
- 第 17 章 一致性
- 第 18 章 代码应该是易理解的
- 第 19 章 软件发展趋势
- 第 20 章 性能设计
- 第 21 章 决定什么是重要的
- 第 22 章 结论
- 总结
详细请参阅翻译说明。
本项目基于 VuePress 进行开发,以提供比 Github Markdown 更佳的阅读体验
git clone https://github.com/yingang/aposd2e-zh.git
cd aposd-zh/
yarn install # 安装 VuePress@next
yarn dev # 编译并打开网页预览