索引 / 001 ZH-CN
A Philosophy of Software Design(软件设计的哲学) cover

计算机科学

计算机科学

A Philosophy of Software Design(软件设计的哲学)

John Ousterhout

英文原名: A Philosophy of Software Design

一本讨论软件设计核心问题——管理复杂性——的小书。作者根据讲授一门以设计为重点的软件课程的经验,主张采用接口简单的深模块、信息隐藏以及审慎的命名和注释,并列出一系列警示信号,提示设计正在变得难以理解和修改。

需要的基础: 用任一语言编写并维护过中等规模程序的经验,例如完成过一个较大的课程项目。

难度等级
入门
学术层次
本科
software designcomplexitymodularityabstractioncode quality

01 / 经典教材推荐

经典教材推荐

适合谁

适合修读软件工程或软件设计课程、已写过足够多代码而能体会结构不良之代价的学生,以及希望获得划分系统模块之原则的初级开发者。本书适合想要能直接用于自己代码的设计思想、而非流程与工具综述的读者。

需要的基础

用任一语言编写并维护过中等规模程序的经验,例如完成过一个较大的课程项目。

覆盖内容

复杂性的本质与成因;可运行的代码与良好的设计,战略式编程与战术式编程;深模块与浅模块;信息隐藏与信息泄漏;通用接口与专用接口;抽象层次;把复杂性往下层推;何时合并、何时拆分代码;通过定义消除错误;设计两次;先写注释并描述不显而易见之处;命名;一致性;以及设计中的危险信号。

如何使用

托马斯和亨特的 The Pragmatic Programmer 就职业程序员的技艺与习惯提供广泛建议;本书则专注于如何组织代码以使其保持简单。若设计决策是你最关心的问题,可选择本书。建议分几次读完,然后在审查自己的项目时运用书中的危险信号。

版本与来源

第2版,由 Yaknyam Press 于2021年7月出版(平装本,ISBN 9781732102217),新增了关于判断何为重要的一章,并与其他设计主张作了比较。本条目的书目信息来自 AbeBooks。