美文网首页js css html
重构您的 PHP 遗留代码

重构您的 PHP 遗留代码

作者: 追梦人在路上不断追寻 | 来源:发表于2023-01-25 22:43 被阅读0次

优秀的开发人员是由他们的代码质量定义的。在软件行业,编写好的代码意味着节省可能投资于测试、更新、扩展或修复错误的资金。在本文中,我将向您展示一些技术和想法的真实示例,这些示例将帮助您清理遗留代码并重构它以使其更加健壮和模块化。这些技术不仅可以帮助您重构旧代码,而且还会为您提供有关如何从现在开始编写干净代码的好主意。

什么是重构,为什么我们需要它?

重构是指帮助您编写干净代码的技术和步骤。这对其他开发人员来说很重要,他们将能够阅读、扩展和重用代码,而无需进行太多编辑。

切勿重构没有单元测试的生产代码

我的第一个建议是永远不要开始重构没有适当单元测试的遗留代码。我想原因很明显:您最终会得到难以修复的损坏功能,因为您将无法弄清楚损坏了什么。因此,如果需要重构它,请先对其进行测试。确保要重构的部分包含在测试中。检查 PHPUnit 代码覆盖率分析

从代码的最深处开始重构

看看下一张图片。这是在 Github 上找到的酒店管理系统的真实项目。这是一个真正的开源项目,因此闭源可能是最糟糕的。

image.png

正如您在此方法中看到的,有三个级别标记为红色。最深的点应该是第一个 if 条件中的嵌套 if/else 语句。通常,最深的一点是专注于单个逻辑,这使得重构更容易。

通过将方法划分为较小的方法或配置文件/数据库表来缩短方法

也许,在这种情况下,我们可以将其提取到私有方法中,如下所示:

image.png

下一个最深的点将是获取帖子数据并加载视图。现在,在重构其他部分后看一下方法add()。它更干净,可读和可测试。

image.png

始终在 if 语句中使用 {}

大多数编程语言都支持一行 if 语句,一些开发人员使用它,因为它很简单,但是,它不可读并且很容易引起问题,因为只有一个空行可以破坏条件并开始崩溃。查看两个示例之间的区别:

image.png

不要使用幻数或魔术字符串:

在下一个示例中,您注意到如果房间超过 250,则会返回错误消息。在这种情况下,250 被视为幻数。如果你不是编写它的开发人员,就很难弄清楚它代表什么。

image.png

为了重构此方法,我们可以计算出 250 是最大房间数。因此,我们可以将其提取为变量$maxAvailableRooms,而不是硬编码它。现在,其他开发人员更容易理解。

image.png

如果不需要,请不要使用 else-语句:

在相同的函数 availablerooms() 中,您会注意到 if 语句,在该语句中,我们可以轻松摆脱 else 部分,并且逻辑仍然相同。

image.png

为方法、变量和测试使用有意义的名称

在下面的示例中,您可以看到酒店管理系统中有两种方法,称为“index() 和 room_m()”。对我来说,我无法确定它们的目的是什么。我认为如果他们的名字是描述性的,会更容易理解。

image.png

使用编程语言的最大功能

许多开发人员没有使用他们使用的编程语言的全部功能。其中许多功能可以为您节省大量精力,并使代码更加健壮。看看下面的示例,注意如何通过仅使用类型提示来轻松地用更少的代码实现相同的结果。

image.png image.png

最后,我想再介绍一些关于更好编码的快速提示:

  • 使用新的数组形式 [ ] 而不是旧的 array()。
  • 使用 === 运算符而不是 ==,除非不检查数据类型很重要。
  • 为公共方法提供简短的描述性名称总是一个好主意。私有方法的名称较长是可以的,因为它们的范围有限。
  • 仅对实现接口示例 add() 的方法使用通用名称,并对单个类方法 addUser() 或 addDocument() 使用描述性名称。
  • 从类中删除未使用的方法。
  • 使用前缀 is/has 与返回布尔值的函数 ex: isAdmin(user), hasPermission(user).
  • 始终在类方法和属性中使用访问修饰符。
  • 注意界面污染:仅使用用户可以公开使用的方法。
  • 组织公共方法位于顶部的类方法。
  • 始终将单一责任概念应用于您的课程。

相关文章

  • 重构您的 PHP 遗留代码

    优秀的开发人员是由他们的代码质量定义的。在软件行业,编写好的代码意味着节省可能投资于测试、更新、扩展或修复错误的资...

  • iOS代码重构

    遗留代码重构的原因: 风险: 详情链接:浅谈遗留代码的重构 从以下几个方面谈谈重构 1. 整理资源文件 删除未使用...

  • 浅谈遗留代码的重构

    背景 《重构》诞生至今有近17个年头了,日常开发中大家谈到重构,要么非常随意,认为重构就是改代码;要么非常谨慎,把...

  • 浅谈遗留代码的重构

    背景 《重构》诞生至今有近17个年头了,日常开发中大家谈到重构,要么非常随意,认为重构就是改代码;要么非常谨慎,把...

  • PHP代码重构历程

    2019年4月 1日,公司的项目业务调整,加了两个月的班,终于上线了,过程一路忐忑,上线前还出现了不少bug,代码...

  • 移动应用遗留系统重构-MVP重构示例篇

    移动应用遗留系统重构(13)-???一镜到底!MVP重构示例篇 前言 上一篇移动应用遗留系统重构(12)- 编译调...

  • 代码重构专题(转载)

    代码重构(一):函数重构规则代码重构(二):类重构规则代码重构(三):数据重构规则代码重构(四):条件表达式重构规...

  • 软件工艺 八荣八耻

    摘自 Odd-e Joseph 语录: 2012版以单元测试为荣,以遗留代码为耻;以积极重构为荣,以代码异味为耻;...

  • 从0到1学习网络安全 【PHP基础-For 循环】

    PHP For 循环 PHP for 循环执行代码块指定的次数。 PHP for 循环 如果您已经提前确定脚本运行...

  • 应用MVP 模式对遗留代码进行重构

    一 AV(Autonomous View)自治视图 在面向终端用户的应用中,都需要一个可视化的UI来与用户交互.这...

网友评论

    本文标题:重构您的 PHP 遗留代码

    本文链接:https://www.haomeiwen.com/subject/syyjhdtx.html