31天重构指南之十八:使用条件判断代替异常
2009-10-13 15:49
525 查看
今天要说的重构来自于我日常工作中的发现而不是其它的什么地方,我在日常工作中经常使用这个重构,我想针对今天要解决的问题可能还有其它的解决方案。
在日常的编码中我们经常需要用到异常来控制程序流,下面的代码就是一个例子:
1: public class Microwave
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/18/refactoring-day-18-replace-exception-with-conditional.aspx
在日常的编码中我们经常需要用到异常来控制程序流,下面的代码就是一个例子:
1: public class Microwave
2: {
3: private IMicrowaveMotor Motor { get; set;}
4:
5: public bool Start(object food)
6: {
7: bool foodCooked = false;
8: try
9: {
10: Motor.Cook(food);
11: foodCooked = true;
12: }
13: catch(InUseException)
14: {
15: foodcooked = false;
16: }
17:
18: return foodCooked;
19: }
20: }
异常处理只应该处理异外的行为,像上述代码中的这种异常大部分时候我们可以用更为合适的条件表达式来处理。我们对上面的代码进行基于契约的编码,我们在
执行指南的动作时先确保满足了必要的状态,以减少由于异常处理带来的性能损失。
1: public class Microwave
2: {
3: private IMicrowaveMotor Motor { get; set; }
4:
5: public bool Start(object food)
6: {
7: if (Motor.IsInUse)
8: return false;
9:
10: Motor.Cook(food);
11:
12: return true;
13: }
14: }
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/18/refactoring-day-18-replace-exception-with-conditional.aspx
相关文章推荐
- 31天重构学习笔记18. 使用条件判断代替异常
- 31天重构学习笔记18. 使用条件判断代替异常
- 31天重构学习笔记18. 使用条件判断代替异常
- 31天重构学习笔记18. 使用条件判断代替异常
- 31天重构学习笔记31. 使用多态代替条件判断
- 31天重构学习笔记31. 使用多态代替条件判断
- 31天重构学习笔记31. 使用多态代替条件判断
- 31 天重构学习笔记18. 使用条件判断代替异常
- 31天重构学习笔记31. 使用多态代替条件判断
- 31天重构学习笔记31. 使用多态代替条件判断
- 重构指南 - 使用多态代替条件判断(Replace conditional with Polymorphism)
- 31天重构指南之三十一:使用多态代码条件判断
- 31 天重构学习笔记31. 使用多态代替条件判断
- 使用条件判断代替异常
- 使用条件判断代替异常
- 31天重构指南之十六:封装条件
- JSP-使用JSTL-out、set、remove、catch捕捉异常、条件判断、流程控制、字符截取
- 31天重构指南之八:用委派代替继承
- 31天重构学习笔记8. 使用委派代替继承
- 31天重构指南之二十四:分解复杂判断