微信号:zte-wxcop

介绍:WXCOP(无限靠谱)研发实践社区——聚焦互联网时代可持续快速交付价值能力提升; 知识交流与传播,社区活动信息发布的平台

【微课】软件设计 第二课 正交四原则之消除重复

2015-07-28 18:24 范璟玮
点击上方 “WXCOP”可以订阅哦!

前言:正交四原则出自袁英杰的OO训练营培训资料,其理论的应用并不仅限于OO。
我相信只要一提到重复代码所有程序员一定都会怀着悲愤的心情述说其惨痛的经历,怒斥前人的Ctrl+C & Ctrl+V大法,然而您真的识别出所有重复了吗?如果您对重复的起因还停留在是代码的复制黏贴上,那您就Out啦。
“代码是对知识的描述。重复则是不同的代码元素对同一知识进行了多次描述,无论它们的描述方式是否一致。”显然这里重复的含义远不是仅指复制粘贴代码产生的重复,请看以下代码:
虽然三者表现形式完全不同,但是非常明显三者都表达了一个概念:“系统允许的最大连接数”。假设代码分别位于三处,那么当“系统允许的最大连接数”发生变化时我们就必须修改三处。这是“重复”令人生厌的典型情况,如下图:
然而现实代码中存在的重复要比上述示例复杂的多,为了识别出重复我们必须挖掘出隐藏在重复代码出现背后的本质,它必然反映出某一个问题域的概念,而非仅仅是代码上的相同或相似。这意味着我们并不完全能以代码的相似程度来判断代码是否重复,在一些情况下重复甚至是合理并且有益的。例如, 下图分别为火车上车和飞机登机流程:
对比这两个流程,仅仅是登机前有一个检票环节的差别,两个流程似乎可以提取出公共流程,再将检票环节作为参数传递进去。但是考虑到两者之间并没有本质上的关联关系,在这里不提取公共流程可能更为合理,并且两者可以保持隔离,分别变化。有时候的重复是一种巧合,因此在消除重复是一定要注意,不能以“能”消除为标准。
在实践中造成重复的原因有很多:难以识别、技能不足、产品规模巨大、缺少沟通、懒惰和对引入故障的恐惧等,消除重复总要比引入重复困难的多。而一个充斥了重复代码的系统往往意味着系统中代码的可重用性很差,重复和重用在系统中是此消彼长的关系。我们可以通过建立完善的保护网来消除团队对于引入故障的恐惧、通过结对和集中代码走查来拉齐团队技能、通过代码共有来提高知识的共享度、通过定期的品码会和竞赛来引导团队面向更高的编码目标。

扫码关注WXCOP订阅号,最新最快咨询第一时间送达!


 
WXCOP无限靠谱 更多文章 WXCOP:"Hello World!" 【搬新家,第一弹】什么是影响力? 【搬新家,第二弹】如果程序员的世界里没有条件判断语句 【最佳实践】如何通过新颖的敏捷回顾会 激发团队士气 “代码PK”,不服?来战!
猜您喜欢 疯转|Java基础知识总结(绝对经典) CDH大数据平台搭建 ELK5.0新特性——X-Pack 做技术到底是应该俗还是雅 拥抱 Android Studio 一从 ADT 到 Android Studio