博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

代码重构高手进来看看!

Posted on 2010-07-30 07:15  还好  阅读(3674)  评论(35编辑  收藏  举报

下面是我所开发的一个UI里面的C#代码,主要就是几个按钮点击事件,按照我们公司的要求在事件里面必须加try-catch-finally做异常处理,不过我感觉每个事件里面都要加相同的try-catch-finally代码,感觉没有达到代码重用,但又不是很清楚改如何重用这部分代码,故特此咨询博客园的大牛们,望大牛不吝赐教!不胜感激!

 

 

代码
private void AddButton_Click()
{
  
try
  {
    
this.Cursor=Cursors.Wait;
    
this._present.Add();//调用另一个Class里面的Add方法
  }
  
catch(Exception e)
  {
    
throw e;
  }
  
finally
  {
    
this.Cursor=Cursore
  }
}

private void DeleteButton_Click()
{
  
try
  {
    
this.Cursor=Cursors.Wait;
    
this._present.Delete();//调用另一个Class里面的Delete方法
  }
  
catch(Exception e)
  {
    
throw e;
  }
  
finally
  {
    
this.Cursor=Cursore
  }
}

private void SaveButton_Click()
{
  
try
  {
    
this.Cursor=Cursors.Wait;
    
this._present.Save();();//调用另一个Class里面的Save方法
  }
  
catch(Exception e)
  {
    
throw e;
  }
  
finally
  {
    
this.Cursor=Cursore
  }
}

 

首先谢谢大家的热心帮助!看来博客园不仅大牛多,热心肠的人更多!再次感谢大家!对于下面的一些评论我想先说明一下,首先在我们项目里面所有的事件都是要做异常处理的,而且所有的异常处理的代码都是一样的(最起码我的代码里面都是一样的),类似于下面这样子:

 

Private void Button_Click()
{
   
try
  {
    
this.Cursor=Cursors.Wait;
    
//调用另一个Class里面的相应方法
  }
  
catch(Exception e)
  {
    
throw e;
  }
  
finally
  {
    
this.Cursor=Cursore
  }
}

 

 

对于一些博友说不需要重构,我觉得还是必要的,因为每一个try-catch-finnaly块都大概要占用10行的代码,而且关键是每一个事件的异常处理代码都是一样的!

最后需要隆重推荐一下下面这篇文章了:

http://www.cnblogs.com/artech/archive/2010/03/26/1697298.html

这篇文章写的非常好,个人觉得很好的解决了我问的问题!推荐大家看一下!

还有就是博友在留言里面推荐的文章,感觉写的也很不错,我一并放在这儿,感兴趣的可以去看看:

1. http://www.cnblogs.com/blodfox777/archive/2010/01/14/AOP-With-PostSharp.html, 一篇关于AOP的PPT,其实我以前我没听说过这个,惭愧!

2. lambda提取block重构