手机版

PHP杂谈《重构-改善既有代码的设计》四元简化条件表达式

时间:2021-10-10 来源:互联网 编辑:宝哥软件园 浏览:

思维导图点击下图查看大图。

引入条件逻辑可能非常复杂,因此本章提供了一些重构技术,专门用于简化它们。全文简述(可以直接跳过以下内容)核心重构:declaration conditional ——分离“切换逻辑”和“操作细节”分离。许多测试都有相同的结果:从合并的条件表达式条件代码中删除重复的组件;合并重复标识特殊情况;用guard子句替换嵌套条件删除了令人讨厌的控制标记;删除继续。Rol Flag技术术语分解:分解,分离合并:合并合格的:合适的和合格的片段:fragment,The fragment nest:nested guard:defending子句:子句多态性:多态断言:断言未检查异常:不可控异常:分解条件条件:如果你有一个复杂的条件语句,那么函数分别从if,else if和else中提取。

巩固条件表达式状态:你有一些条件测试,它们都得到相同的结果,所以把这些测试组合成一个条件表达式,把这个条件细化为一个独立的函数。动机:1。组合条件码会告诉你“其实只有一个条件检查,只需要检查几个并行条件”,——让检查目的更加明确。2.准备提取方法。3354将检查条件细化为一个独立的函数,这对于阐明代码的含义非常有用。它将描述“做什么”的语句替换为“为什么要做”。

声明的“合并原因”也指出了“不合并”的原因:如果你认为你们的支票真的是相互独立的,不应该被视为同一张支票,那么就不要用这种重构。因为在这种情况下,您的代码已经清楚地表达了它的含义。

合并重复的条件片段:条件表达式的每个分支上都有相同的代码片段,因此将重复的代码移出条件。

移除标志状态:在一系列布尔表达式中,一个变量具有“控制标志”的功能,因此控制标志被break语句或return语句替换。

用guard子句替换嵌套条件状态:函数中的条件逻辑使得很难看到正常的执行路径,所以使用Guard子句来表达所有特殊情况。

条件表达式有两种形式:1。所有分支都是正常行为:[如果.其他.] 2.条件表达式极其罕见:条件应该单独检查,并且当条件为真时立即从函数返回。3354这种单独的检查通常被称为“保护语句”用保护子句替换嵌套的条件语句。精华:特别注意一个分支。

用多态替换Conditional:你有一个表达式,它根据不同的对象类型选择不同的行为,所以把这个条件表达式的每个分支放入子类中的一个覆盖函数中,然后把原来的函数声明为一个抽象函数。

这个代码的坏味道:1。太长了。当有一种新类型的视频时,它会变得更长。2.它显然做了不止一件事。3.它违反了单一权力和责任的原则,因为它有几个理由来修改它。4.它违反了打开和关闭的原则,因为每当添加新类型时,都必须对其进行修改。但最麻烦的是到处都有结构相似的函数(_get类型名Rank())。

引入断言状态:如果某段代码需要对程序状态做一些假设,那么这个假设就可以通过断言清晰地表达出来。

运行结果:

运行结果:

地点:

1.经常会有这样的代码,只有当某个条件成立时,这个代码才能正常运行。实际上,程序的最终产品经常会删除所有断言。2.这种假设通常在代码中表达不清楚,必须阅读整个算法才能看到。3354有时程序员用注释来写这样的假设,断言是一种更好的技术。3.断言是一个条件表达式,应该始终为真。如果失败了,说明程序员犯了错误。4.断言可以用作通信和调试的助手。3354沟通:可以帮助程序员阅读和理解代码所做的假设。调试:帮助程序员发现bug,在最近的地方捕捉bug。5.断言不会改变程序的任何行为。6.断言值:帮助程序员理解代码正确运行的必要条件。7.建议断言的条件表达式使用提取方法。为了将几个地方的重复代码提取到同一个函数中,也许只是为了更清楚地解释条件表达式的目的。总结这一章,我更喜欢“用guard子句替换嵌套条件”的方法,这是我在平时的代码中经常使用的方法。有人把这种方法称为“守护条款”。还有一个就是我在php开发中经常用到的调试是var_dump()或者print_r(),我也是第一次发现php中有一个assert方法,不错!在学习和实践的过程中,我也学到了很多好的方法。但是,我觉得在团队开发中,有时候“大局为重”,按照团队习惯的方式进行编码,或者你可以和团队沟通,得到大家的认可,然后使用里面的方法,这样大家调试和读取对方的代码就更方便了。

版权声明:PHP杂谈《重构-改善既有代码的设计》四元简化条件表达式是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。