欢迎光临散文网 会员登陆 & 注册

代码重构 之 条件转换

2022-12-09 12:19 作者:GC_CH  | 我要投稿

    代码重构的目的是让代码更赏心悦目.

    代码重构的方法是等价变换, 也就是使用等价的代码来替换原来的代码.

    条件转换是代码重构的一种常用方法, 即条件语句与条件表达式的相互转换.

逻辑与

    逻辑与表达式 a && b 等价于 两个嵌套的 if 语句, 其中a和b是任意表达式

 

逻辑或

     逻辑或表达式 a || b 等价于 两个并列的 if 语句, 其中a和b是任意表达式

    注意 : 第2个 if 语句属于第一个 if 语句的 else 部分!

逻辑非

    逻辑非表达式 !a 等价于 if (a) 的 else

    通常不需要将逻辑非表达式转换为 if ... else ... 的形式, 但是从 if ... else ...的形式转为 逻辑非表达式的情况是常见的, 比如:

使用条件

    如果 a 或者 b 是很复杂的表达式, 那么可以考虑转换成两个嵌套 if 语句的代码 ; 如果 a 和 b 都是很简单的表达式, 那么可以考虑转换成一个 逻辑运算符连接的表达式.

顺序 if 语句

    如果有多个顺序执行的 if 语句, 那么可以使用 循环语句来重构这些 if 语句, 也就是用函数来封装各个要执行的语句, 然后循环遍历每个条件来执行该条件对应的函数.

    

3个顺序执行的if语句

    

    每个条件对应的要执行的语句分别创建一个函数

    最后修改成的代码如下:

    这种方式看起来复杂, 但是却很容易扩展, 只需要添加一个函数, 然后增加表conditions的元素就行了. 举个例子, 要做很多个单元测试(测试代码是否有bug), 那么要测试某个函数, 只需要把它对应的条件设为true, 就会自动执行这个函数; 条件设为false, 则不会测试那个函数.

    各个函数的参数不同怎么办呢 ? 对每个不同参数的函数建立一个 void () 的函数来调用它就行了.

    注意 : 如果顺序执行的 if 语句中间还有其他代码, 那么通常不能用这种方法替换, 因为中间的代码可能影响后面的 if 语句. 解决方法是 : 把这段中间的代码也看成一个 if (true) 的语句, 把它也加入到表中.

代码重构 之 条件转换的评论 (共 条)

分享到微博请遵守国家法律