首页
登录 | 注册

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

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


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


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


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


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


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


概念分离

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


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


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


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


代码灵活

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


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


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


破除时间耦合

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


善于使用MVC

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


公共数据交换场所

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


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

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








相关文章

  • 作者:郑锴,花名铁杰,阿里巴巴高级技术专家,Apache Hadoop PMC,Apache Kerby 创立者.深耕分布式系统开发和开源大数据多年,先后专注在安全,存储和计算领域.之前在 Intel,目前转战阿里云上,致力于提供更好用更有 ...
  • 电厂锅炉,火电厂三大主力设备之一.在电厂生产过程中发挥了极其重要的作用,是火电厂生产所必不可少的重要设备.但是,近些年,因为锅炉安全管控不到位而造成的事故屡有发生,给电厂的财产及人员的生命造成极大威胁.分析电厂锅炉的泄漏原因,制定有针对性的 ...
  • CODING 研发管理系统上线全球加速,助力企业跨区域协作
    CODING 研发管理系统现已全面支持全类型代码仓库的 全球加速访问. 随着国内互联网红利的日趋枯竭与全球互联网的加速普及.越来越多的企业开始走出国门,将目光投向全世界,搭建跨国体系.跨出国门的中国企业在选择服务时,首要考虑国内的速度和可靠 ...
  • 什么是GIL?GIL对多线程的影响 GIL全称Global Interpreter Lock(全局解释器锁).GIL和Python语言没有任何关系,只是因为历史原因导致在官方推荐的解释器Cpython中遗留的问题.(多线程)每个线程在执行的 ...
  • 微软发布人工智能教育与学习共建社区
    步入2019,人工智能(Artificial Intelligence)的浪潮依然汹涌,各国对于AI人才的需求进一步加大:2月,美国总统特朗普签署行政命令,正式启动美国人工智能计划:加拿大正通过"全球技能战略签证"吸引国 ...
  • 云原生的新思考,为什么容器已经无处不在了
    4月24日,中国信息通信研究院主办的首届云原生产业大会在北京举行,在<云原生数字引领未来>的主题演讲中,阿里云容器服务总监易立表示:"云原生不但可以很好的支持互联网应用,也在深刻影响着新的计算架构.新的智能数据应用.以 ...

2020 jeepshoe.net webmaster#jeepshoe.net
13 q. 0.347 s.
京ICP备10005923号