·1.在问如何做之前,先要问做设么,为什么做,给谁做。
2.在打破规则之前必须要理解它们
3.作为软件开发者,我们希望了解产品负责人和客户需要什么,以及为什么需要,而且我们想知道这些东西是为who而做的,我们并不希望它们告诉我们如何做 涉及利益
4.作为一个专业的开发者,工作的时间越长,就越会从商业角度看待问题,在商业中,我们需要关注两件基础的事物:价值和风险
5.5个为什么
通常表面上都问题都不是真正的问题:它仅仅是另外一个深层问题的表现,一个查找问题根源的方法是,5个为什么。当面对一个问题时候,问为什么会发生或者是什么东西造成这个问题,然后针对哪个答案接着问为什么会发生,直到你问4次,通常会发生一些之前没察觉到的值得注意的问题
6.高质量的代码是聚合的
我觉得开始难以理解,是因为作为一个结构化的程序员,我理解代码的安全毛毯是可以跟着它,我把当做CPU,然后跟踪指令在代码中前行,但这不是一个阅读面向对象代码的好方法
优秀的面向对象程序像是洋葱一样,它们是一层一层的,每一层都代表不同层次的抽象,这是我们思考的方式,概念一层包裹着一层,着帮助我们将概念分块,好让我们从高层次处理问题,当我们想知道更多细节的时候,则可以深入到下面一层
对象不是真正的事物,他们的行为决定了它们代表什么
6.面向对象,设计模式,TDD,重构,关注代码质量,
7.涉众利益,用户价值
8.泛化是表示集合关系,关联表示个体关系。
9.无绪,使民无知,契约设计,具体抽象和实际抽象,接口分离
10.高内聚,低耦合
11.增量开发,持续迭代
12.服务--模块--包--类--代码
服务:SOA原则和模式
模块:模块化原则和模式
包:包设计原则和模式
类:SOLID和设计模式
代码:代码质量
仅关注高层抽象是不够的,只强调代码质量也不够的,我们必须通过其他方式消除断层,这包括模块设计和包设计