重构——38以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clause)

简介: 以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clause):函数中的条件逻辑使人难以看清正常的执行路径;使用卫语句表现所有特殊情况

以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clause)

函数中的条件逻辑使人难以看清正常的执行路径;使用卫语句表现所有特殊情况

一、动机

1、条件表达式所有分支都属于正常行为,使用if...else...

2、如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”(guard clauses)

3、如果单一出口能使函数更清楚易读,就使用单一出口,否则就不必这么做

二、做法

1、对于每个检查,放进一个卫语句

2、卫语句要不就从函数中返回,要不就抛出一个异常

3、每次将条件检查替换成卫语句后,编译并测试

4、你常常可以将条件表达式反转,从而实现Replace Nested Conditional with Guard Clauses

目录
相关文章
|
4月前
|
设计模式
条件判断的模式问题之卫述(Guard Clause)和保镖模式(Bouncer Pattern)是什么关系
条件判断的模式问题之卫述(Guard Clause)和保镖模式(Bouncer Pattern)是什么关系
|
6月前
|
C#
C#动态查询:巧用Expression组合多条件表达式
在C#中,利用`Expression`类和`AndAlso`、`OrElse`方法,可以组合两个`Expression<Func<T, bool>>`以实现动态多条件查询。该方法通过构建表达式树,方便地构建复杂查询。示例代码展示了如何创建表达式树,分别检查年龄大于等于18和姓名为"John"的条件,并使用`AndAlso`组合这两个条件,最终编译为可执行的委托进行测试。
260 1
|
6月前
|
JavaScript 前端开发
js语句(Statement)和表达式(Expression)
js语句(Statement)和表达式(Expression)
61 0
|
存储 安全 编译器
GNU C 扩展语法:指定初始化与语句表达式
GNU C 扩展语法:指定初始化与语句表达式
309 0
|
索引
改善代码设计 —— 简化条件表达式(Simplifying Conditional Expressions)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
938 0
|
索引
一起谈.NET技术,改善代码设计 —— 简化条件表达式(Simplifying Conditional Expressions)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
1009 0
|
索引
改善代码设计 —— 简化“.NET技术”条件表达式(Simplifying Conditional Expressions)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
857 0
重构——35合并条件表达式(Consolidate Conditional Expression)
合并条件表达式(Consolidate Conditional Expression):你有一系列条件测试,都得到相同结果;将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数
1258 0
重构——39以多态取代条件表达式(Replace Conditional with Polymorphism)
以多态取代条件表达式(Replace Conditional with Polymorphism):你手上有个条件表达式,它根据对象类型的不同而选择不同的行为;将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始的函数声明为抽象函数
2410 0
重构——36合并重复的条件片段(Consolidate Duplicate Conditional Fragments)
合并重复的条件片段(Consolidate Duplicate Conditional Fragments):在条件表达式的每个分支上有相同的一段代码;将这段重复的代码搬移到条件表达式之外
1211 0