读书人

复制 粘贴 是坏味道 酝酿好味道的过程

发布时间: 2012-12-26 14:39:29 作者: rapoo

复制 粘贴 是坏味道 酝酿好味道的过程 是难得的 程序员 提升 提高 机会
复制 粘贴 是坏味道
将坏味道变成好味道的过程
是难得的 提升机会

例如:
我在项目中 遇到 的真实问题:
是有关硬件交互的,对硬件的任何操作都可能会出现异常。刚开始的代码看起来是这样的:

function1{for(String devId : devs){Dev dev=null;try{dev=DevManager.getDev(devId);dev.doSomeThing();//do some thing usefull}catch(Exception ex){//保存出错记录,等}finally{if(dev!=null)dev.close();}}}function2{for(String devId : devs){Dev dev=null;try{dev=DevManager.getDev(devId);dev.doSomeAnotherThing();//do some thing usefull}catch(Exception ex){//保存出错记录,等}finally{if(dev!=null)dev.close();}}}

后来又陆续更改 除了 try块 的其他内容,并又添加了几个硬件处理的方法
这时候代码开始 大量 冗余 很难修改

穷则思变
每个方法中 个性的地方几乎只有 try块中 第 2 行以后的 部分 只要把 这部分 单独摘出来 就可以实现 “不 复制 粘贴”
于是有:
interface ICardConlHandle {void exe(Dev dev);}public  class CardConlHandle1 implements ICardConlHandle {public   void exe(Dev dev){dev.doSomeAnotherThing();//do some thing usefull}}public  class CardConlHandle2 implements ICardConlHandle {public   void exe(Dev dev){dev.doSomeThing();//do some thing usefull}}function(ICardConlHandle c){for(String devId : devs){Dev dev=null;try{dev=DevManager.getDev(devId);c(dev);}catch(Exception ex){//保存出错记录,等}finally{if(dev!=null)dev.close();}}}


结论: 将坏的(麻烦的)东西变成好的(简单的)东西,叫创造力。 拥抱坏味道

读书人网 >编程

热点推荐