IMZRH的日志

努力成为一个有用的人

导航

31天重构指南之二十三:引入参数对象

Posted on 2009-10-16 13:37  张荣华  阅读(622)  评论(1编辑  收藏  举报

“引入参数对象”重构来自于Martin Folwers的重构目录,你可以在这里找到原始的描述。

有时当一个方法所需要的参数大于5个后,读懂该方法的签名就会变得比较困难,就像下面的代码:

   1: public class Registration
   2: {
   3:     public void Create(decimal amount, Student student, IEnumerable<Course> courses,
   4:         decimal credits)
   5:     {
   6:         // do work
   7:     }
   8: }
 
在这种情形下创建一个用户传递参数的类是很有帮助的,这会使得代码更容易明白也更灵活,因为当你需要增加参数时,只需要给参数类添加一个属性即可。
请注意只有当你发现方法的参数比较多时才应该应用该重构,如果方法的参数比较少,就没有必要应用此重构,因为该重构会增加系统中类的数量。
 
   1: public class RegistrationContext
   2: {
   3:     public decimal Amount { get; set; }
   4:     public Student Student { get; set; }
   5:     public IEnumerable<Course> Courses { get; set; }
   6:     public decimal Credits { get; set; }
   7: }
   8:  
   9: public class Registration
  10: {
  11:     public void Create(RegistrationContext registrationContext)
  12:     {
  13:         // do work
  14:     }
  15: }
 
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/23/refactoring-day-23-introduce-parameter-object.aspx