不二如是 发表于 2025-3-23 21:00:00

什么情况下「DRY」编程铁律会失效??看这里



产品经理:我需要重新发明轮子!

开发人员:安排:

https://www.bilibili.com/video/BV1AAXWYyE5H

DRY(Don’t Repeat Yourself)是架构设计中经常用到的一句话,这一原则应用非常广泛,在程序设计中同样会用到,不少代码或许不知不觉中违反了这一定义。

如《程序员修炼之道》一书中就有如下一题,重构下面一段代码

if (state == TEXAS) {
      rate = TX_RATE;
      amt = base * TX_RATE;
      calc = 2 * basis(amt) + extra(amt) * 1.05;
} else if ((state == OHIO || (state == MAINE)) {
      rate = ((state == OHIO) ? OH_RATE : ME_RATE);
      amt = base * rate;
      calc = 2 * basis(amt) + extra(amt) * 1.05;
      if (state == OHIO)
                points = 2;
} else {
      rate = 1;
      amt = base;
      calc = 2 * basis(amt) + extra(amt) * 1.05;
}
可能很多人读此代码都有似曾相识之感,不错,我们身边不少程序员就是如此编程的。

这段代码就是由于太多Repeat造成罗嗦难懂,结构复杂,维护困难。大家可能都会迅速想到两点重构方法

**** Hidden Message *****
但是这样就完美了吗?

4个if/else是否让人闻到一股不对劲的气味?

这段程序是否还是传统结构化编程思维?

if条件中state再增多程序会怎样?

此虽然是一段很短的代码,但是重构优化实际是无止境的!

汐澜sama 发表于 2025-3-23 21:43:01

沙发

某一个“天” 发表于 2025-3-23 22:55:27

{:10_256:}

不二如是 发表于 2025-3-24 08:03:40

233333 这也行!!!朕学到了

不二如是 发表于 2025-3-24 22:09:11

233333 这也行!!!朕学到了
页: [1]
查看完整版本: 什么情况下「DRY」编程铁律会失效??看这里