当前位置:首页 > 日记 > 正文

php重构:改进现有代码的设计四个简化的条件表达式

php重构:改进现有代码的设计四个简化的条件表达式
思维导图
点击下图查看大图。
介绍

条件逻辑可能非常复杂,因此本章提供了一些简化它们的重构技术。

对全文的简要描述(您可以跳过以下内容)。
核心重构:分解条件分离和交换逻辑(交换逻辑)和操作细节(细节)分离。
多个试验相同的结果:合并条件表达
在条件代码中删除重复组件:合并副本
确定特殊情况:用保护条款取代嵌套条件句
删除讨厌的控件标记:删除控制标志
技术术语

分解:分解,分离
合并:合并
合格的:合适的,合格的
碎片:碎片,碎片
巢:筑巢
后卫:后卫
条款:条款
多态:多态性
断言:断言
未检查的异常:无法控制的异常

分解条件表达式

状态:您有一个复杂的条件(如果是if语句),那么函数是从if的三个段落中提取的,否则,如果。

合并条件表达式

状态:您有一些条件测试,它们都得到相同的结果。然后将这些测试合并为一个条件公式,并将该条件提取为独立函数。
动机:1。合并的条件代码会告诉你,实际上只有一个条件检查,但有几个平行的条件需要检查,使检查的意图更清楚。
2,为提取方法做准备,通过将检查条件细化为一个独立函数来清除代码的含义非常有用,它改变了做什么和为什么做的语句。

合并条件声明的原因也指出不合并的原因。如果你认为你的检查是独立的,你不应该被看作是同一个检查,所以不要使用这个重建。因为在这种情况下,你的代码清楚地表达了你的意思。

合并重复的条件片断

状态:每个条件分支都有相同的代码,然后这个重复的代码被移出该条件。

拆下控制标志

状态:在一系列布尔表达式中,变量具有一个控制标记的函数,然后用一个断点语句或一个返回语句替换控件标记。
使用卫述句来代替嵌套的条件判断

条件:函数中的条件逻辑使得很难看到正常的执行路径,然后使用保护子句来显示所有特殊情况。

条件形式的两种形式:
1。所有分支都是正常行为:使用{如果…其他的。}
2。条件式是非常罕见的:条件应该分开检查,当条件为真时,它立即从函数中返回。
用条件从句替换嵌套条件句:特别注意分支。

用多态替换条件

状态:你的手上有一个表情。它根据不同的对象类型选择不同的行为。然后将这个条件公式的每个分支放在子类重写函数中,然后将原始函数声明为抽象函数。
这个代码的臭味:

1。它太长了,而且当视频有一个新的类型时它会变长。

2,它显然做了不止一件事。

3,它违背了权责发生制的单一原则,因为它有几个原因来修正它。

4。这违反了开放封闭原则,因为每次添加一个新的类型,它必须被修改。但最麻烦的事情是,有一个功能,具有相似的结构(_get类型名称等级(到处))。

引入斷言

状态:某一段代码需要对程序状态(状态)做一些假设,然后用断言(断言)来表示这个假设。
运行结果:
运行结果:
挖掘点:
1,经常有这样的代码,只有当某个条件是真的时才可以正常运行。
2,这种假设通常是不清楚的显示的代码,你必须阅读整个算法看看。有时程序员编写这样的假设与注释,并assetion是更好的技术。
三.断言是有条件的。它应该总是正确的。如果它失败了,程序员犯了一个错误。
4,断言可以用作通信和调试的助手。通信:它帮助程序员读取代码的假设。调试:帮助程序员找到bug,并在最近的地方捕捉bug。
5,断言不会改变程序的任何行为。
6,断言值:帮助程序员理解代码正确运行的必要条件。
7,建议将提取方法用作断言的条件公式。为了一些重复的代码提取到同一个函数,它可能只是为了更清晰的条件句的使用说明。

总结

在这一章中,我更喜欢用常规条款中常用的保护子句来代替嵌套条件句,有些人称这种方式为从句。
另一个是我经常调试var_dump()或()print_r PHP开发,我也第一次发现有一个断言PHP。

在学习和实践的过程中,我也学到了很多很好的方法,但我认为在一个团队中,有时候是全局性的,要根据团队的习惯进行编码,或者你可以与团队沟通交流,然后在大家的认可下,在这里使用,这样我们彼此在阅读代码和调试时就更方便了。

相关文章

QQ空间说新的定时发布功能

QQ空间说新的定时发布功能

空间,功能,电脑软件,QQ,1。功能规则。 每个QQ号码总共可以设置1000个计时语句; 两。函数入口。 1,让我们讨论一下按钮旁边的时钟图标。下拉菜单项中有三项,即设置时间、检查我的计时列表、定期取消文章和发布。 2、单击设置时间、弹出时间…

什么launch.exe过程必须与发射过程

什么launch.exe过程必须与发射过程

查询,发射,过程,电脑软件,launch,点评:launch.exe是Vantarakis推出的应用程序的一部分,用来帮助用户清除浏览历史 进程文件:启动或launch.exe 进程名称:Vantarakis Launchh 过程类别:安全风险的过程 英文描述: launch.exe是Vantarakis启动应用…

Word2007设置表格格式完整的进攻

Word2007设置表格格式完整的进攻

设置,表格,完整,格式,电脑软件,在创建表,微软Office Word2007提供了多种方式来设置表格格式。如果你决定使用表样式,然后你可以设置表格格式时,甚至预览表的外观风格在实际应用的具体风格。 你可以创建一个通过分裂或合并单元格表格的定制外观…

在Word2003宏矿业快捷键的方法

在Word2003宏矿业快捷键的方法

方法,快捷键,矿业,电脑软件,在计算机的任何软件都有它的快捷键,那么Word2003。它不仅可以提高我们的工作效率,还能提高我们的业务水平。但你不能记住单词的所有快捷键,所以我们可以在Word中使用宏观命令我所有的快捷键。 打开word窗口,展开宏>…

什么是QQ空间音乐盒

什么是QQ空间音乐盒

空间,音乐盒,电脑软件,QQ,QQ空间音乐盒主要服务广大QQ空间用户的音乐需求。您可以从真正的音乐库中挑选您喜欢的歌曲,创建自己的音乐收藏,并展示您的个人音乐品味。当歌曲被设置为背景音乐时,您或您的朋友将自动播放音乐时,您或您进入QQ空间,创…

linux系统对过程pid的快速实现

linux系统对过程pid的快速实现

系统对,过程,快速,电脑软件,linux,点评:一个很简单的命令,pgrep,可以快速定位的过程,包含一个关键字的PID,并使用此命令,没有更多的PID的ps aux过程后。 一个很简单的命令,pgrep,可以迅速找到一个过程,包含了一个关键的PID,并使用此命令,没有更多的PI…

Oracleora-01114和ora-27067错误解

Oracleora-01114和ora-27067错误解

解决方法,错误,电脑软件,Oracleora,ora,今天,一个朋友问下面的情况,ora-01114,ora-27067,和osd-04026错误出现在同一时间: * * * * *动作的名称:(0.762)2009-04-01 09:31: *模块名称:(JDBC瘦客户机)2009-04-01 09:31: 0.762 *服务名称:(系统用户2009-04…

SSH登录太慢,无法登录

SSH登录太慢,无法登录

无法登录,登录,太慢,电脑软件,SSH,评论:ssh登录太慢可能是DNS解析的问题。默认配置下,当第一次接受sshd SSH客户端连接,它会自动反向分析客户端IP获取SSH客户端的域名或主机名。 如果DNS反向分析是不正确的在这个时候,sshd会等到DNS解析超时提…

Linux的VPS的节点数量的观点

Linux的VPS的节点数量的观点

数量,节点,观点,电脑软件,Linux,评论:VPS节点数代表的最大许可可以为这个VPS存在的文件数。 为了不影响整个服务器的性能,为每一个Linux的VPS节点的数量通常是有限的。如何查看节点数的Linux的VPS 命令:DF - I 你可以很容易地检查节点数和…

使用PHP验证复选框有效性的示例

使用PHP验证复选框有效性的示例

有效性,验证,复选框,示例,电脑软件,验证复选框的PHP代码,如下所示: 复制代码代码如下: *验证php中复选框的有效性 * / 价值=是; 验证数据; 如果(isset($ _post { 'subscribe ' })){ 如果($ _post { } = = 'subscribe的美元价值){ $ =真的; {人} $…

Linux顶级命令参数

Linux顶级命令参数

参数,命令,电脑软件,Linux,注释:top命令是linux下常用的性能分析工具。它可以实时显示每个进程的资源占用,类似于Windows的任务管理器。 top命令是linux下常用的性能分析工具。它可以实时显示每个进程的资源占用,类似于Windows的任务管理器。…

对srvc32.exe-过程srvc32是什么

对srvc32.exe-过程srvc32是什么

过程,电脑软件,exe,评论:详细的介绍了srvc32.exe - srvc32过程 进程文件:srvc32或srvc32.exe 进程名称:Small.DP Trojan 过程类别:安全风险的过程 英文描述: srvc32.exeis注册为small.dp木马下载器。这个过程通常附带了一个病毒,它的主要作用是…