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