时间耦合
时间是软件架构的一个常常被忽视的方面,吸引我们的时间只是进度表上的时间。作为软件自身的一种设计要素,时间有两个方面对我们很重要:并发和次序。我们在编程时,通常并没有把这两个方面放在心上。当人们最初坐下来开始设计架构、或是编写程序时,事情往往是线性的,那是大多数人的思考方式——总是先做这个,然后再做那个。但这样思考会带来时间耦合:在时间上的耦合,方法A必须总在方法B之前调用,“嘀”必须在“嗒”之前发生。
程序在时序性上的依赖是客观存在的,我们需要做的是
:
1. 尽量减少不必要的时序依赖以提高并发能力;
2. 保证真正需要的时序依赖不存在被破坏的可能。人们通常会通过文档说明时序的依赖,就像MSDN中会写明使用COM之前必须调用CoInitialize()一样。但实际开发中时序上依赖通常会成为潜规则,只有当初开发的人自己知道,对后面维护的人来讲这就会是定时炸弹。对不得已的时序依赖一定要写入文档或者标明注释。