美文网首页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 遗留代码

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