博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DRY(Don't Repeat Yourself )避免重复代码原则
阅读量:7041 次
发布时间:2019-06-28

本文共 1035 字,大约阅读时间需要 3 分钟。

凡是有经验的程序员都能够意识到应该避免重复的代码和逻辑。

为什么重复的代码和逻辑是隐患呢?

如果从一个类中复制了一段代码到另一个类中,这段代码需要时不时的修改,那么就要花时间去修改所有包含这段逻辑的代码,无形中增加了维护成本和发生bug的几率。这时候就要着手消除和抽取重复的代码。

**消除重复的代码有一个三次法则:

1.第一次先写了一段代码。 2.第二次在另一个地方写了一段相同的代码。 3.再次在另一个地方写了同样的代码,这个时候就要赶紧去抽象消除这个问题了。

什么样的代码算是重复的? 一个实例:

products)) {throw new Exception("Max 3 products allowed");}$this->products[] =$product;}}final   class   Shipment { private   $products ; public   function   addProduct( $product ) { if   (3 == count ( $this ->products)) { throw   new   Exception( "Max 3 products allowed" ); } $this ->products[] = $product ; } } 复制代码

这两段代码中都有一个相同的方法addProduct,这两段代码算是重复的吗?违反DRY原则吗?

作为一个领域驱动的实践者,我们可以从业务的角度来分析这一代码,第一段代码似乎是一个用户在购物,但是我们最多允许用户购买三件商品。 在第二段代码的场景中,我们想要给所有用户提供相同的机会并限制用户最大购买数量。

这一分析说明了这两段代码所描述的 领域(Domain)、业务(Business)、知识(Knowledge)、边界(Boundary)、职责(Resposibility)不同, 这两段代码之所以相同完全属于巧合。对这样的代码进行提取和消除重复是错误的。

之前有一些大型的项目遇到一些问题,就是将一些本不应该提取的代码(各种Model、数据访问)抽取到了一个叫做Shared的工程中,这一举动导致开发人员在后期不敢再修改Shared工程中的任何代码,以至于开发人员宁可重新添加一个方法也不敢修改之前的代码。

DRY看似初级人员都要掌握的能力,如果使用不当会造成非常严重的后果。

参考文章:

转载地址:http://iaxal.baihongyu.com/

你可能感兴趣的文章
Git实用命令速记
查看>>
构建故障分析平台采用python实现抓包分析数据包
查看>>
memcache 与memcached 区别以及使用方法
查看>>
MYSQL-MEMORY引擎
查看>>
Vsftpd+(linux)文件服务器
查看>>
P2P技术如何将实时视频直播带宽降低75%?
查看>>
统计文件夹下文件总数
查看>>
JEPLUS之循环报表—JEPLUS软件快速开发平台
查看>>
从一个线上问题分析binlog与内部XA事务提交过程
查看>>
网页版式设计与平面构图
查看>>
view桌面模板控制usb权限
查看>>
吾日三省吾身
查看>>
【office培训】【王佩丰】Excel2010视频教程第2讲:单元格格式设置
查看>>
os x下为sublimetext2设置环境变量
查看>>
android inflate
查看>>
libxml2的编译与安装
查看>>
网站优化的前方之路在哪里?
查看>>
Spring Boot中使用redis的发布/订阅模式
查看>>
手动清除memcached缓存方法
查看>>
tomcat 配置为服务随开机自动运行
查看>>