摘要:但条件逻辑也是不能忽视的分解条件表达式问题有一个复杂的条件语句。没什么说的动机重构代码就是错移除控制标志问题在一系列布尔表达式中,某个变量带有控制标记的作用方法以语句或语句取代控制标记动机控制标记大大降低了代码可读性。
前言
前面已经对类,方法,字段都进行了重构。貌似看起来很完整了。但条件逻辑也是不能忽视的
分解条件表达式 问题有一个复杂的条件(if-then-else)语句。(判断条件很长,执行逻辑很长,else执行逻辑很长)
方法从If、then、else三个段落中分别提炼出独立函数
1、将if段落提炼出来,构成一个独立的函数
2、将then段落和else段落都提炼出来,各自构成一个独立的函数(如果发现嵌套的条件逻辑,先观察是否可以使用“以卫语句取代嵌套条件表达式”(此手法是下面的9.5),如果不行才开始分解其中的每个条件)
为什么符合逻辑
合并条件条件表达式 问题有一列条件测试,都得到相同的结果
if(a>2)return 0; if(a<10)return 0;方法
将这些测试合并为一个条件表达式,并将这个条件表达式提炼成为一个独立的函数
动机在条件表达式的每一个分支上有着相同的一段代码,很容易导致长函数
合并重复的条件片段(Consolidate Duplicate Conditional Fragments) 问题重复代码是万恶之源!
方法合并重复代码。没什么说的
动机重构代码就是错
移除控制标志 问题在一系列布尔表达式中,某个变量带有“控制标记”的作用 ]
boolean condition = true;
以break语句或return语句取代控制标记
动机控制标记大大降低了代码可读性。这就是编程语言提供break和continue的原因
以卫语句取代嵌套条件表达式卫语句就是把复杂的条件表达式拆分成多个条件表达式
问题函数中的条件逻辑使人难以看清正常的执行路径
方法使用卫语句表现所有特殊情况
动机如果两个条件互不影响。可以使用多个if
。而不是if-else
需要再三检查某对象是否为null
方法将null值转换为null对象。为需要的类创建Null接口。并且创建子类Null...类。在子类中设置默认的方法
引入断言 问题某一段代码需要对程序状态做出某种假设
方法以断言明确表现这种假设
动机如果程序员不犯错,断言就应该不会对系统运行造成任何影响,所以加入断言永远不会影响程序的行为。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69733.html
那有什么天生如此,只是我们天天坚持。 本篇文章主要讲解 《重构---改善既有代码的设计》 这本书中的 第九章简化条件表达式中 的知识点, Decompose Conditional(分解条件表达式) 问题:你有一个复杂的条件(if、then、else) 语句 解决:从if、then、else三个段落中分别提炼出独立函数 //重构前 if (date.before(SUMMER_START) |...
摘要:重构在不改变代码的外在的行为的前提下对代码进行修改最大限度的减少错误的几率本质上,就是代码写好之后修改它的设计。重构可以深入理解代码并且帮助找到。同时重构可以减少引入的机率,方便日后扩展。平行继承目的在于消除类之间的重复代码。 重构 (refactoring) 在不改变代码的外在的行为的前提下 对代码进行修改最大限度的减少错误的几率 本质上, 就是代码写好之后 修改它的设计。 1,书中...
摘要:函数改名问题函数的名称未能揭示函数的用途。这些人甚至会在构造函数中使用设值函数。方法将构造函数替换为工厂函数。以上所说的情况,常会在返回迭代器或集合的函数身上发生。以异常取代错误码问题某个函数返回一个特定的代码,用以表示某种错误情况。 Rename Method 函数改名 问题 函数的名称未能揭示函数的用途。 方法 修改函数名称。 动机 好的函数需要有一个清晰的函数名。保证一看就懂 A...
摘要:为何重构重构有四大好处重构改进软件设计如果没有重构,程序的设计会逐渐腐败变质。经常性的重构可以帮助维持自己该有的形态。你有一个大型函数,其中对局部变量的使用使你无法采用。将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。 哪有什么天生如此,只是我们天天坚持。 -Zhiyuan 国庆抽出时间来阅读这本从师傅那里借来的书,听说还是程序员的必读书籍。 关于书的高清下载连...
阅读 3594·2021-09-22 15:28
阅读 1249·2021-09-03 10:35
阅读 848·2021-09-02 15:21
阅读 3436·2019-08-30 15:53
阅读 3463·2019-08-29 17:25
阅读 537·2019-08-29 13:22
阅读 1506·2019-08-28 18:15
阅读 2256·2019-08-26 13:57