第四章:“注重实效的偏执”&&第五章的一部分
“你不可能写出完美的软件”这句话对吗?
按合约设计:
1、前条件:为例调用例程,必须为真的条件,例程的需求,在其前提条件被违反时,绝对不可以被调用,传递好数据是调用者的责任。
2、后条件:例程保证会做的事,例程完成世界的状态,例程是可结束的,例程应杜绝无限循环。
3、类不变项:类在调用者角度来看,该条件必需为真,在例程内部清理时,不变项不一定会保持,但在例程返回到调用者时,不变项必须为真。
要崩溃,不要破坏:
这点感觉特别好,在发现程序异常时,终止程序并告诉开发者错在哪里,既防止了程序失控,又告知原因所在,java的异常类便是继承如此。如果它不可能发生,用断言确保它不发生。
1.解耦与得墨忒耳法则:好篱笆促成好邻居。函数的得墨忒耳法则视图使任何给定程序中的模块之间的耦合减至最少。越耦合程序依赖性就越低,这对于开发来说是极其重要的。
2.时间是软件架构的一个常常被忽视的方面。时间有两个方面对我们很重要:并发(即事情在同一时间发生)和次序(即事情在时间中的相对位置)我们需要容许多并发,并考虑解除任何时间或次序上的依赖,这样程序才算是健壮。