2019-03-04 08:58:08 +08:00
2019-03-03 22:29:32 +08:00
2019-03-04 08:58:08 +08:00

A-Philosophy-of-Software-Design

《软件设计哲学》

目录

前言

1引言

1.1如何使用本书

2复杂性的本质

2.1定义复杂性
2.2复杂性的症状
2.3复杂性的原因
2.4复杂性是递增的
2.5结论

3工作守则还不够

3.1战术编程
3.2战略规划
3.3投资多少?
3.4初创公司和投资
3.5结论

4个模块应该很深

4.1模块化设计
4.2界面中有什么?
4.3抽象
4.4深层模块
4.5浅模块
4.6 Classitis
4.7示例Java和Unix I / O.
4.8结论

5信息隐藏和泄漏

5.1信息隐藏
5.2信息泄露
5.3时间分解
5.4示例HTTP服务器
5.5示例:类太多了
5.6示例HTTP参数处理
5.7示例HTTP响应中的默认值
5.8隐藏在类中的信息
5.9太过分了
5.10结论

6个通用模块更深入

6.1使课程有点通用
6.2示例:为编辑器存储文本
6.3更通用的API
6.4一般性导致更好的信息隐藏
6.5问自己的问题
6.6结论

7个不同的层不同的抽象

7.1传递方法
7.2接口复制何时可以?
7.3装饰
7.4接口与实现
7.5传递变量
7.6结论

8向下拉复杂性

8.1示例:编辑器文本类
8.2示例:配置参数
8.3太过分了
8.4结论

9更好地在一起还是更好

9.1如果共享信息,请汇集在一起
9.2如果它将简化界面,汇集在一起
9.3汇集在一起以消除重复
9.4单独的通用和专用代码
9.5示例:插入光标和选择
9.6示例:用于记录的单独类
9.7示例:编辑器撤消机制
9.8分裂和连接方法
9.9结论

10定义存在的错误

10.1为什么例外会增加复杂性
10.2太多例外
10.3定义错误不存在
10.4示例Windows中的文件删除
10.5示例Java子串方法
10.6掩盖异常
10.7异常聚合
10.8刚崩溃?
10.9设计特殊情况不存在
10.10太过分了
10.11结论

11设计两次

12为什么写评论 四个借口

12.1好的代码是自我记录的
12.2我没时间写评论
12.3评论过时并变得具有误导性
12.4我看到的所有评论都毫无价值
12.5写得好的评论的好处

13评论应该描述代码中不明显的事情

13.1选择约定
13.2不要重复代码
13.3较低级别的注释增加了精度
13.4更高层次的评论增强了直觉
13.5接口文档
13.6实施意见:什么和为什么,而不是如何
13.7跨模块设计决策
13.8结论
13.9第13.5节中的问题答案

14选择名称

14.1示例:错误的名称会导致错误
14.2创建图像
14.3名称应该准确
14.4始终使用名称
14.5不同的意见:去风格指南
14.6结论

15首先写下评论

15.1延迟评论是不好的评论
15.2首先写下评论
15.3评论是一种设计工具
15.4早期评论是有趣的评论
15.5早期评论是否昂贵?
15.6结论

16修改现有代码

16.1保持战略性
16.2维护注释:将注释保留在代码附近
16.3注释属于代码,而不是提交日志
16.4维护评论:避免重复
16.5维护注释:检查差异
16.6更高级别的注释更容易维护

17一致性

17.1一致性的例子
17.2确保一致性
17.3太过分了
17.4结论

18代码应该是显而易见的

18.1使代码更加明显的事情
18.2使代码不那么明显的事情
18.3结论

19软件趋势

19.1面向对象的编程和继承
19.2敏捷开发
19.3单元测试
19.5设计模式
19.6吸气鬼和二传手
19.7结论

20性能设计

20.1如何考虑绩效
20.2修改前的测量
20.3围绕关键部分进行设计
20.4一个例子RAMCloud缓冲区
20.5结论

21结论

v指数

设计原则摘要

红旗总结

Description
软件设计哲学
Readme 490 KiB