您的位置:首页 > 其它

31天重构指南之十六:封装条件

2009-10-12 09:49 344 查看
有时当我们的条件关系比较复杂时,代码的可读性会比较差,所以这时我们应该根据条件表达式是否需要参数将条件表达式提取成可读性更好的属性或是方法,如果条件表达式不需要参数则可以提取成属性,如果条件表达式需要参数则可以提取成方法。下面是我们来看一段重构前的代码:

1:publicclassRemoteControl

2:{


3:privatestring[]Functions{get;set;}


4:privatestringName{get;set;}


5:privateintCreatedYear{get;set;}


6:


7:publicstringPerformCoolFunction(stringbuttonPressed)


8:{


9://Determineifwearecontrollingsomeextrafunction


10://thatrequiresspecialconditions


11:if(Functions.Length>1&&Name=="RCA"&&CreatedYear>DateTime.Now.Year-2)


12:return"doSomething";


13:}


14:}


对上面的代码进行封装条件重构,重构后的代码如下:

1:publicclassRemoteControl


2:{


3:privatestring[]Functions{get;set;}


4:privatestringName{get;set;}


5:privateintCreatedYear{get;set;}


6:


7:privateboolHasExtraFunctions


8:{


9:get{returnFunctions.Length>1&&Name=="RCA"&&CreatedYear>DateTime.Now.Year-2;}


10:}


11:


12:publicstringPerformCoolFunction(stringbuttonPressed)


13:{


14://Determineifwearecontrollingsomeextrafunction


15://thatrequiresspecialconditions


16:if(HasExtraFunctions)


17:return"doSomething";


18:}


19:}




原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/16/refactoring-day-16-encapsulate-conditional.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: