31天重构指南之十六:封装条件
2009-10-12 09:49
344 查看
有时当我们的条件关系比较复杂时,代码的可读性会比较差,所以这时我们应该根据条件表达式是否需要参数将条件表达式提取成可读性更好的属性或是方法,如果条件表达式不需要参数则可以提取成属性,如果条件表达式需要参数则可以提取成方法。下面是我们来看一段重构前的代码:
1:publicclassRemoteControl
对上面的代码进行封装条件重构,重构后的代码如下:
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/16/refactoring-day-16-encapsulate-conditional.aspx
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:}
原文链接:
相关文章推荐
- 31天重构指南之一:封装集合
- 重构指南 - 封装条件(Encapsulate Conditional)
- 31天重构学习笔记16. 封装条件
- 31天重构学习笔记16. 封装条件
- 31天重构学习笔记16. 封装条件
- 31天重构指南之三十一:使用多态代码条件判断
- 31天重构指南之十八:使用条件判断代替异常
- 31天重构学习笔记16. 封装条件
- 31天重构指南
- 31天重构指南之六:降低字段
- 31天重构学习笔记1. 封装集合
- 31天重构学习笔记31. 使用多态代替条件判断
- 31天重构指南之二:移动方法
- 31天重构指南之七:重命名
- 31天重构指南之十一:使用策略类
- 重构指南 - 封装集合(Encapsulate Collection)
- 31天重构学习笔记18. 使用条件判断代替异常
- 《31天重构》介绍与1:封装集合(可下载)
- 31天重构指南之二十五:引入契约式设计
- 31天重构学习笔记31. 使用多态代替条件判断