[size=xx-large]复制 粘贴 是坏味道
将坏味道变成好味道的过程
是难得的 提升机会[/size]
例如:
我在项目中 遇到 的真实问题:
是有关硬件交互的,对硬件的任何操作都可能会出现异常。刚开始的代码看起来是这样的:
后来又陆续更改 除了 try块 的其他内容,并又添加了几个硬件处理的方法
这时候代码开始 大量 冗余 很难修改
穷则思变
每个方法中 个性的地方几乎只有 try块中 第 2 行以后的 部分 只要把 这部分 单独摘出来 就可以实现 “不 复制 粘贴”
于是有:
[b][color=red]结论: 将坏的(麻烦的)东西变成好的(简单的)东西,叫创造力。 拥抱坏味道[/color][/b]
将坏味道变成好味道的过程
是难得的 提升机会[/size]
例如:
我在项目中 遇到 的真实问题:
是有关硬件交互的,对硬件的任何操作都可能会出现异常。刚开始的代码看起来是这样的:
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();
}
}
}
[b][color=red]结论: 将坏的(麻烦的)东西变成好的(简单的)东西,叫创造力。 拥抱坏味道[/color][/b]