写毕业设计遇到了小瓶颈,跑来写下俺的小博客,
那天看到tim大牛的博客http://timyang.net/programming/pragmatic-programmer/里面写了关于DRY(Don’t Repeat Yourself)于是乎看到了以下的题目,最近在公司写个小程序刚好遇到这样的问题太多的if~endif:
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;
}
然后自己就拿着这道题目去考小bluef,并且自己也给出了自己的想法
dict={’texas’:fun,OHIO:fun1,MAINE:fun,default:fun}
def fun(parm1=1):
rate = parm1;
amt = base * parm1;
calc = 2 * basis(amt) + extra(amt) * 1.05;
def fun1(parm):
fun(parm)
points = 2;
def main(key,parm):
cal=dict.get(key)
cal(parm)
结束语:当然这样实现的机制完全是倚赖着python的强大面向对象,如果是rpg这类过程语言实在想不到好的办法,那天弄if我就烦了,所以在写python开发的时候自己是极度痛恨使用if语句的,原因很简单,看起来不舒服很乱…

Responses to “分享下Don’t Repeat Yourself的想法”
Leave a Reply