2c634d474590db4d2cb14e5e696aee600df17010
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