代码分层、分模块的好处

第一条,也是最根本的一条:抽象出了代码的整体框架、脉络,同时也隔离了具体的变化。没有分层,把逻辑都写在一个方法里面的代码就好比是一本没有目录的电子书,要找哪一章哪一节全得凭感觉,得点进去看,得结合上下文来分析。
良好的代码层次结构则相当于给这电子书创建了目录,而且按住Ctrl+鼠标就能点进去。它可以让维护人员迅速地掌握代码的整体架构,因为它把功能点都显式地列出来并很好地组织在一起了。要维护代码首先就得理解它,因此从维护的角度讲,分层极有必要。
一本书的目录是不会经常变的。这就相当于抽象出了代码的整体架构,一盘散沙、群龙无首的局面宣告结束;比较抽象的说法是:固定出了不变的部分;可不是么,整体架构是随随便便就能换的吗?假如这本书是一份系统说明文档的话,它的具体内容可能会经常变,比如某处出现了排版错误、或是错别字,或是描述欠妥当;但改完之后目录一般是不用变的,变的只是具体的内容。代码在这方面更彻底,无论具体内容怎么变,整体架构都是不用变的;这就是隔离了具体的变化,它影响不了上层的抽象结构。
在这里,系统分层、分模块体现的是依赖倒置原则:目录的各层级永远都只是提纲挈领性的抽象描述,具体内容要点进去才知道。即使这个目录下的内容再少,哪怕就一句话,也要想办法用一个更高层次的概念来概括它,而绝不能直接把它做为目录。道理显而易见,具体的东西是经常变化的,抽象的才能固定下来。依赖倒置原则的作用就在于固定不变逻辑,隔离变化逻辑。
而对于代码而言,狭义上的抽象指的仅仅是抽象类、接口,实际上,即使把代码重构为一个private方法也可以看成是一种抽象。代码此时也有一个从具体到抽象的嬗变,这个私有方法也可以看成是“目录”。另外所谓ioc也可以看作是依赖导致原则的一个体现,高层依赖的只能是抽象类、接口或普通父类,否则ioc便没有意义;它的优势是在解耦方面做得更彻底,在代码层面上彻底消除了对具体实现类的依赖。
第二条,有利于代码复用。假如要复用某段逻辑,前提就是要把它单独放在一个模块里;显然,铁板一块的代码无法使其任何一个子逻辑被复用。这也要求模块的封装非常彻底,不能与其他模块过多地耦合,否则就不能“一处定义到处使用”。
代码的合理封装是这一切的基础。只有封装才能产生层次结构,进而实现固定不变隔离变化,也只有封装才能实现代码复用。
个人经验之谈,不足之处请不吝赐教。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值