什么情况下「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再增多程序会怎样?
此虽然是一段很短的代码,但是重构优化实际是无止境的! 沙发 {:10_256:} 233333 这也行!!!朕学到了 233333 这也行!!!朕学到了
页:
[1]