推荐阅读《Event-based programming: taking events to the limit》
软件开发的奥义就是:分而治之。
代码世界从来都是一个充斥着耦合的世界,在这个世界里有着各种各样的耦合:静态耦合,动态耦合,类型耦合,逻辑耦合,空间耦合,时间耦合……。可以说,通常而言,一个良好的软件开发,最重要的一个步骤就是使用各种各样的工具来解耦目标系统,使其变成更小,更简单,更易于理解,更便于测试,更……的逻辑单元。完成这一阶段之后,剩下来的,差不多就都是体力活了。
然而,需要强调的一点是,我们要追求的绝对不是一个没有耦合的系统(我很怀疑,可能存在这样的系统么?)。实际上,一些耦合正是业务逻辑的表达,无法去除。我的意思是,或许我们致力于去除的,只是一部分“实现层面的耦合”。话说到这个分上,已经有点 “as simple as possible but not simpler” 的味道,赶紧打住了。
为了解耦系统,我们发展出了种种工具:接口、代理、设计模式……。在所有这些解耦工具之中,最为强悍的恐怕就是消息系统,它的解耦效果,不仅仅体现在概念维度上(接口的使用者和实现者),而且也体现在空间维度上(分布式消息)时间维度上(异步消息)。关于这一点,我这里推荐的这本书,讲得比较清楚。
我们很幸运 Apress 在 2006 年推出的《Event-based programming: taking events to the limit》现在已经可以在 Google Book 上全文读到。而相应的豆瓣页面也正等着大家去丰富。
这里需要强调的一点是:解耦从来都是有代价的,更为彻底的解耦通常就意味着更难把握。对于广大 Erlangor 来说,这本书中的代码和实例,可能不是那么有参考价值,但我们使用的语言正是完全建立在“基于消息编程的架构”之上的,多读一点参考资料,至少是第一章,当然也是很有必要的。
感谢 Jeffry Zhao 在 Twitter 上的投递。
有下载的
http://www.itpub.net/viewthread.php?tid=1144236&highlight=Event-based%2Bprogramming
@david nice!
这本书有点偏理论,比较适合写paper的人士用来参考。。。