编写可读代码:通过提前返回来减少缩进
代码 通过 编写 返回 减少 提前 缩进
2023-09-14 08:57:43 时间
在这篇简短的文章中,我想向您提供有关编写可读 PHP 的技巧。
在处理旧代码或通过 PR 提交的代码时,有时会看到以下模式:
public function doSomething($someParameter) { /** 可以是任何类型的测试 */ if ($someParameter === 0) { // 实际工作 } }
在函数的开头,有一个正在执行的测试。实际工作在 if
块中。
这可以通过反转条件和使用早期返回来重构。
public function doSomething($someParameter) { if ($someParameter !== 0) { return; } // 实际工作 }
这样做有两个好处:
一个缩进级别丢失。仅此一项就使阅读更加愉快。您无需费心将代码包裹在某种东西中。
提前返回对人类来说也很好。当有人读了你的代码,对早期返回感兴趣,他或她不需要进一步的早期返回。在第一个示例中,仍然可能有一些代码在 if
块之后执行。
当您考虑行长度限制 (您应该这样做) 时,您现在可以在执行实际工作时使用更多的字符。
当存在多个条件时,此技术也适用。考虑以下功能:
public function doSomething($someParameter, $someOtherParameter) { /** 可以是任何类型的测试 */ if ($someParameter === 0) { if ($someOtherParameter === 0) { // 实际执行 } } }
通过使用早期返回,您可以将其重写为更具可读性的内容。
public function doSomething($someParameter, $someOtherParameter) { if ($someParameter !== 0) { return; } if ($someOtherParameter !== 0) { return; } // do the actual work }
您可能想要重写这个 if 语句。
if ($someParameter !== 0 || $someOtherParameter !== 0) {
在大多数情况下,出于以下三个原因,我不这样做:
1. 就我个人而言,我需要更多的脑力来分析这个问题
2. 当有更多条件时,很容易出错 (我应该使用 || 还是 &&)
3. 使用早期返回更容易调试。可以在那些 if 块中放置断点或 dump 语句。这样,您就知道哪个条件会导致提前返回。
本文总结:每当您看到在 if 块中执行某些代码时,请检查是否可以反转该条件以丢失缩进级别。
更多学习内容请访问:
相关文章
- JPA的merge对联合唯一索引无效(代码库)
- 通过TortoiseSVN查看SVN代码修改记录
- android通过代码判断手机是否root
- 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
- 使用SAP BDC技术通过ABAP代码自动打开SE38事务码
- ZZNUOJ_C语言1076:三位数求解(完整代码)
- NLP:自然语言处理技术中常用的文本特征表示方法之字典特征抽取(对字典型数据通过特征抽取和向量化进而实现特征数字化,one-hot编码/仅有值稀疏矩阵,如对类别型特征转换数字型)代码实现
- NLP:自然语言处理技术中常用的文本特征表示方法之字典特征抽取(对字典型数据通过特征抽取和向量化进而实现特征数字化,one-hot编码/仅有值稀疏矩阵,如对类别型特征转换数字型)代码实现
- 分布式电源接入对配电网影响的研究(Matlab代码实现)
- 基于改进霍夫变换通过曲率进行圆检测(Matlab代码实现)
- 智能优化算法应用:基于蚁狮优化算法的工程优化案例-附代码
- 基于狮群算法改进的DELM预测-附代码
- 改进非线性收敛因子灰狼优化算法-附代码
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )
- 吉首大学_编译原理实验题_基于预測方法的语法分析程序的设计【通过代码】
- python 与机器学习实战(何宇健)代码下载
- gdb list命令查看源码 break设置断点可以通过源码也可以根据汇编代码地址设置
- 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
- 通过信道优化数据传输的通信链路的实现(Matlab代码实现)
- Pycharm中修改git提交代码的账户和用户名【Git追溯注解,git blame】
- IOS JSBox 安装 VSCode 通过插件JSBox 同步编辑代码到iPhone