Update README.md

This commit is contained in:
Go7hic
2019-03-02 21:54:44 +08:00
committed by GitHub
parent a5e9611b9a
commit 2c634d4745

166
README.md
View File

@@ -1 +1,165 @@
# A-Philosophy-of-Software-Design
# 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指数
#### 设计原则摘要
#### 红旗总结