解耦是好的,但这是在模块间这个前提下的。过分强调解耦,是过分设计的典型例子。因为我记得关于耦合的书上除了“模块间耦合度很低”,还有“模块内耦合很高”这样一句话的。
设想一下解耦到极限的状态,那就跟宇宙间所有物质在时间和空间上均匀分布一样,那就没有银河系,没有地球,我身上的这些物质也不会聚在一起让我在这儿说这些废话了:)。
因为我还存在,还在继续说废话,所以宇宙间所有物质不是在时间和空间上均匀分布。所以软件还是要分成很多个子系统,模块,对象和方法,所以谈解耦还是要谈模块间的解耦,任何东西都是有度的。
我认为程序逻辑及数据(对应于物质)通过概念上的内聚形成模块(对象)的过程,体现在物理上就是把一些有关的逻辑(方法或数据)放在一起的过程。这种对象概念的逐渐内聚,是和解耦同时进行的,因为内聚的过程就代表着与另外一个对象进行解耦,其过程类似于人从胚胎长到人的过程。开始时大家都在一起以一个细胞的形式存在,随后,逐步分化,渐渐分化成很多个不同的部分,而在这个过程中,各个部分因为分化而又互相联系。