第1章 务实的哲学
1 人生是你的
我活着不是为了满足你的期望,正如你也不是阴我我的期望而活着。——李小龙
提示3 你有权选择
3 软件的熵
心理学家的研究表明,绝望是会传染的,就像狭窄空间中的流感病毒。无视一个明显损坏的东西,会强化这样一种观念:看起来没有什么是能修好的,也没人在乎,一切命中注定了。
提示5 不要放任破窗
4 石头做的汤和煮熟的青蛙
提示7 牢记全景
破窗理论中,人们失去打败熵的都是是因为他们觉得没有其他人在乎。而青蛙仅仅只是未察觉到变化。
不要学青蛙,永远留意大局,持续不断地审视你身边发生的事情,而不要只专注于你个人在做的事情。
6 知识组合
提示9 对知识组合做定期投资
7 交流!
第2章 务实的方法
8 优秀设计的精髓
提示14 优秀的新设计比糟糕的设计更容易实现
ETC是一种价值观念,不是一条规则
如何做到:
一开始需要有一点有意识的强化。可能需要花一个星期左右的时间有意识地问自己:“我刚刚做的事情是让整个系统更容易改变还是更难改变”。当保存文件时问一遍,当写测试时间问一遍,当修复bug时也问一遍。
9 DRY——邪恶的重复
在一个系统中,每一处知识都必须单一、明确、权威地表达。
提示15 DRY——不要重复自己
不要把DRY限定为“不要复制粘贴源码”,虽然这是DRY的组成,但只是一小部分,一点也不重要。
DRY针对的是你对知识和意图的复制。它强调的是,在两个地方表达的懂事其实是相同的,只是表达方式有可能不同。
- 代码中的重复
- 文档注释中的重复
- 数据中的DRY违规
提示16 让复用变得更容易
10 正交性
正交性
几何中正交性是相互独立(向量)。
计算科学中,这个术语象征着独立性或解耦性。对于两个或多个系统,其中一个的改变不影响其他任何一个,则这些事物是正交的。在良好设计的系统中,数据库相关代码应该和用户界面保持正交:可以改变界面而不应影响数据库,切换数据库而不必更换界面。
非正交的系统天上就复杂,难以变更和控制。
提示17 消除不相关事物之间的影响
11 可逆性
如果某个想法是你唯一的想法,那就没有比它更危险的东西了。
提示18 不设最终决定
12 曳光弹
曳光弹和普通弹药间隔被压入弹夹,当曳光弹发射时,上面的磷会被点燃,在枪和击中物之间留下一道烟火轨迹,如果曳光弹击中了目标,那么之后的常规子弹也会击中。士兵使用这些曳光弹来调整他们的瞄准:这是一套务实的方法,可以在真实条件下提供实时反馈。
