June 13th, 2010

分享下Don’t Repeat Yourself的想法

, python, by zay.

写毕业设计遇到了小瓶颈,跑来写下俺的小博客,

那天看到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语句的,原因很简单,看起来不舒服很乱…

Back Top

Google密码被盗 通过动态导入实现工厂模式

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

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Back Top