网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 软件设计的哲学(第2版)
分类 教育考试-考试-计算机类
作者 [美]约翰·奥斯特豪特(John Ousterhout)
出版社 人民邮电出版社
下载
简介
编辑推荐
1. 作者专业,内容靠谱:约翰·奥斯特豪特,斯坦福大学计算机科学教授,具有丰富的工业界经验和学术成就,是Tcl脚本语言的创建者,曾获多个技术奖项。
2. 系统化解决软件复杂性:全面探讨软件设计中的复杂性管理,提供具体方法以实现复杂软件系统的有效模块化。
3. 实用的设计哲学:与热销书的《代码整洁之道》进行对比,强调通用设计的选择,教导读者如何区分软件设计中的重要事项。
4. 内容全面更新:第二版在前一版基础上增加了新的设计策略和案例,提供更多实用的设计知识和技巧。
内容推荐
本书深入探讨了软件设计中的核心问题:如何将复杂的软件系统分解为可以相对独立实现的模块(例如类和方法),从而降低其复杂性并提高开发效率。本书首先介绍了软件设计中的基本问题,即复杂性的本质。其次,讨论了有关如何处理软件设计过程的“哲学”问题,如通用设计的重要性、与《代码整洁之道》中设计哲学的对比,以及如何将重要的东西和不重要的东西区分开等内容。最后,总结了在软件设计过程中应遵循的一系列设计原则,以及一系列识别设计问题的警示信号。
本书适合软件工程师、计算机科学专业的学生、教育者、对软件设计和开发感兴趣的自学者和技术管理者阅读。通过应用本书中的思想,读者可以优选限度地降低大型软件系统的复杂性,从而更快地以更低的成本编写软件,并构建更易于维护和增强的系统。
目录
第 1章 导言\t001
1.1 如何使用本书\t004
第 2章 复杂性的本质\t007
2.1 复杂性的定义\t007
2.2 复杂性的表现\t009
2.3 复杂性的原因\t012
2.4 复杂性是增量的\t014
2.5 结论\t015
第3章 能工作的代码是不够的\t017
3.1 战术性编程\t017
3.2 战略性编程\t019
3.3 投资多少?\t020
3.4 初创企业与投资\t022
3.5 结论\t023
第4章 模块应该深\t025
4.1 模块化设计\t025
4.2 接口包含哪些内容?\t027
4.3 抽象\t028
4.4 深模块\t029
4.5 浅模块\t031
4.6 类炎\t033
4.7 示例:Java和UNIX I/O\t033
4.8 结论\t035
第5章 信息隐藏(和泄漏)\t037
5.1 信息隐藏\t037
5.2 信息泄漏\t039
5.3 时序分解\t040
5.4 示例:HTTP服务器\t041
5.5 示例:类过多\t042
5.6 示例:HTTP参数处理\t043
5.7 示例:HTTP响应中的默认值\t045
5.8 类内的信息隐藏\t046
5.9 过犹不及\t047
5.10 结论\t047
第6章 通用模块更深\t049
6.1 让类有点通用\t049
6.2 示例:为编辑器存储文本\t051
6.3 更通用的API\t052
6.4 通用性带来更好的信息隐藏\t054
6.5 要问自己的问题\t055
6.6 将专用性向上推(和向下推)\t056
6.7 示例:编辑器撤销机制\t057
6.8 消除代码中的特例\t060
6.9 结论\t061
第7章 不同层,不同抽象\t063
7.1 直通方法\t064
7.2 接口重复何时可行?\t066
7.3 装饰器\t067
7.4 接口与实现\t069
7.5 直通变量\t070
7.6 结论\t073
第8章 降低复杂性\t075
8.1 示例:编辑器文本类\t076
8.2 示例:配置参数\t076
8.3 过犹不及\t078
8.4 结论\t078
第9章 合并好,还是分开好?\t079
9.1 如果共享信息,则合并\t081
9.2 如果可以简化接口,则合并\t081
9.3 消除重复,则合并\t082
9.4 区分通用代码和专用代码\t085
9.5 示例:插入光标和选择区域\t086
9.6 示例:单独的日志类\t087
9.7 拆分和连接方法\t089
9.8 不同意见:《代码整洁之道》\t092
9.9 结论\t093
第 10章 避免处理异常\t095
10.1 为何异常会增加复杂性\t095
10.2 异常太多\t098
10.3 定义错误不存在\t100
10.4 示例:Windows中的文件删除\t100
10.5 示例:Java的substring方法\t101
10.6 异常屏蔽\t103
10.7 异常聚合\t104
10.8 就让它崩溃\t109
10.9 过犹不及\t110
10.10 结论\t111
第 11章 设计两次\t113
第 12章 为什么要写注释?4个借口\t117
12.1 好的代码自己就是文档\t118
12.2 我没有时间写注释\t119
12.3 注释会过时,会产生误导\t120
12.4 我见过的注释都没有价值\t121
12.5 写好注释的好处\t121
12.6 不同观点:注释就是失败\t122
第 13章 注释应描述代码中不明显的内容\t125
13.1 选择约定\t126
13.2 不要重复代码\t127
13.3 低层注释增加准确度\t130
13.4 高层注释增强直观性\t133
13.5 接口文档\t136
13.6 实现注释:做什么和为什么,而不是怎么做\t144
13.7 跨模块设计决策\t146
13.8 结论\t149
13.9 13.5节问题解答\t150
第 14章 选择名称\t151
14.1 示例:糟糕的名称会导致缺陷\t151
14.2 塑造形象\t153
14.3 名称应准确\t153
14.4 一致地使用名称\t157
14.5 避免多余的词\t158
14.6 不同意见:Go风格指南\t159
14.7 结论\t161
第 15章 先编写注释\t163
15.1 拖延的注释是糟糕的注释\t163
15.2 先编写注释\t164
15.3 注释是一种设计工具\t165
15.4 早期注释是有趣的注释\t166
15.5 早期注释是否昂贵?\t167
15.6 结论\t168
第 16章 修改现有代码\t169
16.1 持续使用战略性编程\t169
16.2 维护注释:让注释靠近代码\t171
16.3 注释属于代码,而非提交日志\t172
16.4 维护注释:避免重复\t173
16.5 维护注释:检查差异\t175
16.6 更高层次的注释更容易维护\t175
第 17章 一致性\t177
17.1 一致性的例子\t177
17.2 确保一致性\t178
17.3 过犹不及\t181
17.4 结论\t181
第 18章 代码应显而易见\t183
18.1 让代码更显而易见\t184
18.2 让代码不显而易见的因素\t186
18.3 结论\t190
第 19章 软件发展趋势\t191
19.1 面向对象编程和继承\t191
19.2 敏捷开发\t193
19.3 单元测试\t194
19.4 测试驱动开发\t196
19.5 设计模式\t197
19.6 取值方法和设值方法\t197
19.7 结论\t198
第 20章 性能设计\t199
20.1 如何考虑性能\t199
20.2 修改前(后)的度量\t202
20.3 围绕关键路径进行设计\t203
20.4 示例:RAMCloud的Buffer类\t204
20.5 结论\t210
第 21章 确定什么是重要的\t211
21.1 如何确定什么是重要的?\t211
21.2 尽量减少重要的东西\t212
21.3 如何强调重要的东西\t213
21.4 错误\t213
21.5 更广泛的思考\t214
第 22章 结论\t215
设计原则总结\t217
警示信号总结\t219
书评(媒体评论)
John Ousterhout教授以其敏锐的洞察力,深入剖析了软件设计中的深层逻辑与哲学内涵。本书不仅关注代码的简洁与架构的优雅,还涉及设计原则与实践策略,每一处见解都闪烁着智慧的光芒。本书不仅是技术指导手册,更是一部提升软件设计思维的作品,激励读者重新思考软件设计的本质。无论你是编程新手还是资深工程师,阅读本书都将使你在软件设计的旅途中获得启发,领略软件设计的真谛。
——卢山 腾讯技术工程事业群总裁
无论你是软件工程师还是对软件设计和开发感兴趣的自学者,本书都具有阅读价值。软件作为数字化转型的核心要素,既要兼容过去,又要面向未来。我们总是需要在软件不断增加的功能、开发效率和维护成本之间寻求平衡点。由于我们都不能预知未来,因此当下的优未必是将来的优。书中的观点和案例将助力读者确立以战略性编程思维降低软件复杂性的设计原则。
——宋继强 英特尔中国研究院院长
在这个技术迅猛发展的时代,本书为我们提供了一个深入思考的契机。作为软件设计领域的扛鼎之作作,本书不仅深入探讨了设计的技术细节,还揭示了背后的哲学思想。它引导我们在复杂的业务需求与设计的优雅之间寻求平衡,并从哲学的角度理解软件设计中的决策与权衡。这是一本值得反复品读的佳作,它将引领我们在软件设计的旅途中不断追求卓越与优雅。
——谢涛 北京大学讲席教授,欧洲科学院外籍院士
软件设计应该是人类所从事的所有工程设计领域中复杂的一项活动,其第一性原理即是“最小化复杂性”。本书从剖析和降低软件复杂性的根源入手,精心提炼并总结了软件设计领域几十年来积累的宝贵原则、方法和实践经验。值得一提的是,在大模型快速推动软件开发革新的今天,这些哲学性的思考和实践指导对于人工智能如何应对软件设计的复杂性,仍然具有深远的意义。
——李建忠 CSDN高级副总裁
《重构:改善既有代码的设计》通过大量实例展示了代码微观设计的优化方法,而本书则从更为抽象的角度探讨了优秀与拙劣设计背后的根本差异。软件工程师若能深入学习本书,并思考如何用实例来支持或辩驳书中的观点,将会获得一次非常具有价值的思维锻炼。
——邹欣 《编程之美》和《构建之法》的作者
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/2/22 12:55:41