Files
A-Philosophy-of-Software-De…/README.md
2019-03-04 08:58:08 +08:00

4.2 KiB
Raw Blame History

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指数

设计原则摘要

红旗总结