第1章 务实的哲学

1 人生是你的

我活着不是为了满足你的期望,正如你也不是阴我我的期望而活着。——李小龙

“为什么你不考虑改变一下呢?”

提示3 你有权选择

积极主动点,掌握这些机遇。

3 软件的熵

心理学家的研究表明,绝望是会传染的,就像狭窄空间中的流感病毒。无视一个明显损坏的东西,会强化这样一种观念:看起来没有什么是能修好的,也没人在乎,一切命中注定了。

提示5 不要放任破窗

一旦窗户开始破裂,运转良好的干净系统会迅速恶化。

4 石头做的汤和煮熟的青蛙

提示7 牢记全景

破窗理论中,人们失去打败熵的都是是因为他们觉得没有其他人在乎。而青蛙仅仅只是未察觉到变化。
不要学青蛙,永远留意大局,持续不断地审视你身边发生的事情,而不要只专注于你个人在做的事情。

6 知识组合

“时效资产”

提示9 对知识组合做定期投资

7 交流!


第2章 务实的方法

8 优秀设计的精髓

提示14 优秀的新设计比糟糕的设计更容易实现

ETC是一种价值观念,不是一条规则
如何做到:
一开始需要有一点有意识的强化。可能需要花一个星期左右的时间有意识地问自己:“我刚刚做的事情是让整个系统更容易改变还是更难改变”。当保存文件时问一遍,当写测试时间问一遍,当修复bug时也问一遍。

9 DRY——邪恶的重复

  1. 在一个系统中,每一处知识都必须单一、明确、权威地表达。

提示15 DRY——不要重复自己

不要把DRY限定为“不要复制粘贴源码”,虽然这是DRY的组成,但只是一小部分,一点也不重要。

DRY针对的是你对知识和意图的复制。它强调的是,在两个地方表达的懂事其实是相同的,只是表达方式有可能不同。

  • 代码中的重复
  • 文档注释中的重复
  • 数据中的DRY违规

提示16 让复用变得更容易

10 正交性

正交性
几何中正交性是相互独立(向量)。
计算科学中,这个术语象征着独立性或解耦性。对于两个或多个系统,其中一个的改变不影响其他任何一个,则这些事物是正交的。在良好设计的系统中,数据库相关代码应该和用户界面保持正交:可以改变界面而不应影响数据库,切换数据库而不必更换界面。

非正交的系统天上就复杂,难以变更和控制。

提示17 消除不相关事物之间的影响

11 可逆性

如果某个想法是你唯一的想法,那就没有比它更危险的东西了。

提示18 不设最终决定

12 曳光弹

曳光弹和普通弹药间隔被压入弹夹,当曳光弹发射时,上面的磷会被点燃,在枪和击中物之间留下一道烟火轨迹,如果曳光弹击中了目标,那么之后的常规子弹也会击中。士兵使用这些曳光弹来调整他们的瞄准:这是一套务实的方法,可以在真实条件下提供实时反馈。

13 原型与便签