用C语言实现一个命令执行的功能容易做出这样的模块划分,解析模块,命令模块,控制模块,这样划分模块的出发点很简单,站在测试的角度上,所有的模块都是可测试的。
但是当我回头审视时,突然发现Command模块本身提供的所有的方法都只被controller使用,并且Command实现的方法都非常的简单,为什么不能将Command和controller合并,它们的合集仍然可以表达一个完整的概念,虽然细分后的模块也具备完整的概念,难道仅仅为了可测试性的原因就要划分出一个模块,这个理由显然不充足,和同事讨论了20多分钟,最后他用一个词点醒了我,“层次”,对,我们划分模块不是因为它的大小而是因为层次,很显然从上图可以看出controller与paser、command模块不是一个层次上的,它们是使用者和被使用者的关系,并且