减少代码模块之间的纠葛——解耦

来源:互联网 发布:修容产品推荐 知乎 编辑:程序博客网 时间:2024/06/05 19:38

辛苦堆砌,转载请注明出处,谢谢!


这篇文章是本人公众号中的文章,《程序员修炼之道》个人感悟,感觉写的还不错XD,所以也发到CSDN,希望能够帮助大家。博主最近比较忙,不过没有白忙,工作中好好用了一把Android的测试框架espresso,有机会给大家详细说说,感觉espresso还是挺好用的,尤其是坐着看自动填表单,感觉有点高科技,程序员就要“懒一些”。下面是正文。


代码从产生之日起,就需要我们为之努力工作。软件开发阶段,我们需要编码,发布后的软件之后,为了迎合变更的需求,纠正各类问题,我们不断地修改代码,所做的一切,就是希望我们的软件可以更好地工作。可以说,程序员的工作就是编写代码和修改代码——单调但不乏味,我们总是遇到各种让我们难缠的问题,我们又一次次将其解决。


但是,我们可曾想过,如何让自己的工作更加简单轻松?我们的工作主要依靠头脑和快速敲击键盘的手指,当我们需要修改代码时,尽可能少的活动我们的手指和头脑,就是减少我们工作量最好的方式。这里,我们要说到一个老生常谈的问题——代码的解耦。


耦合度低的代码,不会造成牵一发而动全身的结果,我们不必为了修改一处代码,过多考虑别处的代码;我们需要添加功能,也不必将新的代码插入到已有代码的各个角落。打个形象的比方,高耦合的代码就好比散乱的各色毛线,错综复杂,越理越乱,而耦合小的代码就是整齐摆放的各色毛线球。


那么如何降低代码的耦合性呢?今天就向大家介绍一下。


概念分离

第一个方法,我们要保证代码中的概念分离,所谓概念,就是我们设计时的一个个类。首先,每一个类要概念独立;其次,我们要保证代码在完成一项功能时,一个类尽可能少的与其他类发生关系。


每一个类概念独立,很好理解,打个比方,书柜和书柜里的书,我们就不要设计一个类是书柜和书,而是要定义两个独立的类,书柜类和书类,之后通过关联将两个类联系起来,它们之间的关系就是书柜中可以放书。


那么,如何理解一个类尽可能少的与其他类发生关系呢?这就好比我们现实生活中有些事情不一定人多就好办事,办一件事,人太多了,反而可能不利于把事情办好。我们现在取快递,是快递员告诉我们有快递,我们直接找他去拿就好了。我们假设有另一种模式,快递员只是通知我们有快递了,让咱们过去和他要地址,我们找到了快递员,他告我们去XX街XX路口拿,我们去了另一个地方,结果发现这里的人走了,留下了一个字条,说他去了另一个地方,你想要知道我去哪里了,可以问XX快递员。不往下写了,估计快递很难取到了。在这里,我们相当于和三名快递员存在耦合,才会导致我们出现意外情况,难以弥补。


所以,概念解耦,是我们代码解耦的第一步。


代码灵活

我们要保证我们的代码足够灵活。什么样的代码叫灵活的代码呢?这里牵扯到面向对象的开闭原则,不详细说明了,简单来说就是我们修改功能或逻辑,最好可以不动代码,即使动代码,变动的代码也要尽可能的集中。


怎么做到呢?方法是使用配置文件,比如我们可以为我们的项目设计一个XML文件,其中有项目的各个模块的装配信息,我们可以在程序启动时动态解析XML文件,然后动态装配我们的各个模块,这样,当我们有一些需要改变功能的工作,可能只需要修改装配信息,就可以完成了。Spring框架是利用这个思路的典范。


说的严重一些,想让代码灵活,这种装配文件是必不可少的,是我们应该多多采用的方式。


破除时间耦合

大家或许会有疑问,时间怎么会有耦合?时间耦合是指一些事情我们本可以并行处理,但是,由于人比较善于线性思考,所以将其线性化了。写代码时,如果没有严格的先后顺序,可以使用并行处理,这样,一方面,破除了本不该存在的耦合,另一方面,对程序性能也有重大的改善。举个生活中的例子,我们做开水的时候没有必要非要等待水开了才去做另一件事,这就是典型的并行处理。


善于使用MVC

MVC可以说是最经典的架构模型,相信程序员都应该了解,这里不再赘述。


公共数据交换场所

如果模块之间需要交换数据,而且各个模块还是并行的,那么,一个好的方法是我们可以提供一块供他们交换数据的公共场所,这样,可以极大限度的减少各个模块之间的耦合。打个形象的比方——超市购物,我们现在的超市,工作人员将商品摆放在货架上,他要做的工作的,就是保证自己的货架有足够的商品,他不用关心什么样的人买了商品,而我们购物,只需要看货架上的产品,没必要去和工作人员直接沟通。这样,加快了我们购物的速度,也加快了工作人员的工作速度,互不影响。


尝试在开发时使用上面的方法,我们就能够写出低耦合的代码,这样,我们就能够极大地减少我们的工作量,提高我们工作的实效性。







1 0
原创粉丝点击