复制 粘贴 是坏味道 酝酿好味道的过程 是难得的 软件工程师 提升 提高 机会

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

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

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

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();}}}


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