重构第18天 用条件语句来代替异常(Replace exception with conditional)

理解:本文中的“使用条件判断代替异常”是指把没有必要使用异常做判断的条件尽量改为条件判断。

详解

重构前代码:

 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     }

重构后的代码如下所示,try   catch 做条件判断的语句改成了if   return 的方式,这样在很多程度上统一了代码的书写,同时也提高了性能。

 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     }

这个重构在项目代码中也经常用到,因为对于一部分程序员,是很难把握什么时候用try   catch ,什么地方该用try   catch 。记得之前大家还专门讨论过这些,比如如何用好以及在大中型项目中应该把它放在哪一个组件中等。

时间: 2024-12-14 03:50:48

重构第18天 用条件语句来代替异常(Replace exception with conditional)的相关文章

重构第四天 : 用多态替换条件语句(if else & switch)

面相对象的一个核心基础就是多态,当你要根据对象类型的不同要做不同的操作的时候,一个好的办法就是采用多态,把算法封装到子类当中去. 重构前代码: 1 public abstract class Customer 2 { 3 } 4 5 public class Employee : Customer 6 { 7 } 8 9 public class NonEmployee : Customer 10 { 11 } 12 13 public class OrderProcessor 14 { 15

重构第六天:用条件语句替换异常

在工作中经常遇到用异常去控制程序流程,下面是一个普遍的例子: public class Microwave { private IMicrowaveMotor Motor { get; set; } public bool Start(object food) { bool foodCooked = false; try { Motor.Cook(food); foodCooked = true; } catch (InUseException) { foodcooked = false; }

js中的条件语句

1 //js中的条件语句 2 3 var age=60; 4 5 6 //example1 单分支语句 7 if(age>30){ 8 console.log("你已经不年轻了!"); 9 }else{ 10 console.log("你依然很有活力!"); 11 } 12 13 14 //example2 多分子语句 当程序执行到第一个满足条件的情况下就不再往下判断 15 16 if(age>40&&age<=60){ 17 co

Java中条件语句和if-else的嵌套原则

if(condition)Statement 在此时的条件语句中的条件是需要用括号把它括起来.   其实,Java中的条件语句和C/C++中的是一样的.而Java常常希望在某个条件为真的时候执行多条语句.此时,我们就会引入一个概念,那就是"块模块(block statement)",具体格式如下,仅供参考: { statement1 statement2 ... } 就拿下面的例子,我们来试试上面的这个格式吧! if(score>=90) system.out.println(&

VBS基础篇 - 条件语句

经常地,当我们编写代码时,我们需要根据不同的判断执行不同操作,我们可以使用条件语句完成这个工作. If...Then...Else 在下面的情况中,您可以使用 If...Then...Else 语句: 在条件为 true 时,执行某段代码 选择两段代码之一来执行时 dim a '定义一个变量 a = 100 if a < 200 then a = 300 '若i<200,则对i重新赋值 msgbox a '输出的值为300 要运行多行代码,必须使用多行(或块)语法,多行(或块)语法包含 End

Java使用条件语句和循环结构确定控制流

与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流.本文将简单讲解条件.循环和switch. 一.块作用域 块(block),即复合语句.是指由一对大括号括起来的若干条简单的Java语句.块确定了变量的作用域. 比如: 1 public class Code { 2 static 3 { 4 System.out.println("1"); 5 } 6 { 7 System.out.println("2"); 8 } 9 public Code() 1

golang 条件语句和循环语句

golang的条件语句: package main import (     "fmt" ) func main(){     age := 18          // if else if else 语句     if age == 18 {         fmt.Println("your age is 18")     }else if age > 18{         fmt.Println("your age is bigger th

大话重构连载18:最常见的问题

使用抽取方法,虽然道理十分简单,但实际操作起来却并不是那么容易的.完成抽取方法最大的困难,就是如何处理抽取函数与原函数的数据交换.如同将一颗大树从土壤里拔出来,盘根错节的根茎,那是剪不断理还乱.当代码还没有被抽取出来之前,它们与其它程序都是在一个函数的内部,因此各个代码段可以毫无顾忌地相互交互数据.但当我们将代码从原函数中抽取出来时,抽取出来的代码与原函数中的代码就形成了一道墙,要交换的数据只能通过参数与返回值进行交互,这将给我们带来诸多麻烦. 将代码从原函数中抽取出来,放进新的函数中,首先就会

python 条件语句、循环语句

*条件语句: 流控制语句-分支结构: 语法: 1.简单条件语句: if 条件:语句 2. if 条件: 语句1: else: 语句2 3 if   条件: 语句: elif 条件: 语句1: elif 条件: 语句1: else: 语句3 条件:可以用 >=  <=  >  < ==  != 0-10之间的数 如果判断 需要多个条同时判断时,or   and -逻辑运算符 if n>0 and n<10 0-5 或者10-15之间的数 if (n>0and n&l