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

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


例如:
我在项目中 遇到 的真实问题:
是有关硬件交互的,对硬件的任何操作都可能会出现异常。刚开始的代码看起来是这样的:
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();
		}
	}
}


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

你可能感兴趣的:(C++,c,C#)