美文网首页
消除重复和揭示意图会有冲突吗?

消除重复和揭示意图会有冲突吗?

作者: 袁慎建 | 来源:发表于2020-05-22 21:38 被阅读0次

Kent Beck提出了简单设计的四条原则:

  1. 通过测试
  2. 消除重复 | 揭示意图
  3. 最少元素

并提到他们的优先级顺序依次降低。什么意思呢,就是说你可以违背其中一条原则,但前提是你是为了满足优先级更高的选择。举个例子,我增加了一个常量,我重构的过程中,增加了一个常量,违背了最后一条,但我是为了消除魔鬼数字,揭示代码意图,所以我是可以这么做的。

优先级容易理解,但问题来了,消除重复和揭示意图他也没有明确说哪个就一定比哪个高。以至于业界存在两派,A说消除重复优先级更高,B说揭示意图优先级更高。本来设计就是一个较抽象的概念,所以受优先级左右的初学者,可能有点不知如何是好。

写代码,最好的方式就是实践法。心里兜着这四条原则后,多有意识留意在你写过的项目代码中,到底那条更加优先。或者去找一些编码经验丰富的朋友聊一聊。

我自己也试过。但我试之前心里是有一个倾向的,因为我个人偏好,我认为重复是万恶之源,所以我心里把它放在更前。但实际上,我在项目代码中很少碰到我因为消除了重复而不揭示意图的,也很少要通过重复来表达意图的,很多时候重复会天然让人感到困惑 -- 为什么要写一样的逻辑呢?所以我也没觉得这两条会有什么冲突,只是因为重复造成的修改成本较高,我觉得应该尽可能消除重复。

后来,测试写多了,发现在测试代码中,我会留一定的重复,不会偏执狂般去消除重复。在测试中,有一种坏味道叫逻辑分割,这个会让我不得不在测试中跳来跳去,所以我做了另一种权衡。

关于这两条,你又是怎么看的呢?

相关文章

  • 消除重复和揭示意图会有冲突吗?

    Kent Beck提出了简单设计的四条原则: 通过测试 消除重复 | 揭示意图 最少元素 并提到他们的优先级顺...

  • 「重构」读书笔记

    重构不是目的,而是工具。 为何重构 改进软件设计 维持或改进代码的设计意图,避免代码结构流失 消除重复代码,方便未...

  • 消除冲突

    宇宙的存在本没有冲突的 只是存在 动物为了食物而冲突 只是肢体上的对抗 人与人之间的冲突 却是彼此之间所相信的内容...

  • 学员+17组+应佳薇+【202002训练营-W2D5-CPR思维

    2、拆页:《关键冲突》第1章 2.1 R原文: CPR思维法这种思维方式不但能确定核心问题,而且可以消除重复做无用...

  • (构建模式)

    消除一切重复代码,消除一切if-else,这就是我们的目标。 在网上看到的关于builder的模式一般会有两个。 ...

  • 利益,友谊,会有冲突吗?

    对于友谊,不知道你们是怎么想的 面对30岁这个坎,人生需要有很多的调整,不仅仅是未来的方向,还有家庭观、友谊观,甚...

  • 痛感与快感

    痛感与快感 好的故事必然有冲突。 冲突的类型很多。 比如内在冲突与内在冲突,内在冲突是本质的冲突,往往能揭示人性的...

  • 消除重复项

    题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额...

  • 学员+20组+大大+【202002训练营-W2D5-CPR思维】

    《关键冲突》第1章 R原文: CPR思维法 这种思维方式不但能确定核心问题,而且可以消除重复做无用功的问题。其具体...

  • 学员+7组+cicy+【202002训练营-W2D5-CPR思维

    拆页:《关键冲突》第1章 R原文: CPR思维法 这种思维方式不但能确定核心问题,而且可以消除重复做无用功的问题。...

网友评论

      本文标题:消除重复和揭示意图会有冲突吗?

      本文链接:https://www.haomeiwen.com/subject/ewvinhtx.html