重构您的 PHP 遗留代码

分享
程序员 2024-9-24 13:18:57 98 0 来自 中国
良好的开辟职员是由他们的代码质量界说的。在软件行业,编写好的代码意味着节省大概投资于测试、更新、扩展或修复错误的资金。在本文中,我将向您展示一些技能和想法的真实示例,这些示例将资助您清算遗留代码并重构它以使其更加结实和模块化。这些技能不但可以资助您重构旧代码,而且还会为您提供有关怎样从现在开始编写干净代码的好主意。
什么是重构,为什么我们必要它?

重构是指资助您编写干净代码的技能和步骤。这对其他开辟职员来说很告急,他们将可以大概阅读、扩展和重用代码,而无需举行太多编辑。
切勿重构没有单元测试的生产代码

我的第一个发起是永远不要开始重构没有恰当单元测试的遗留代码。我想缘故原由很显着:您终极会得到难以修复的粉碎功能,由于您将无法弄清楚粉碎了什么。因此,假如必要重构它,请先对其举行测试。确保要重构的部门包罗在测试中。查抄 PHPUnit 代码覆盖率分析
从代码的最深处开始重构

看看下一张图片。这是在 Github 上找到的旅店管理体系的真实项目。这是一个真正的开源项目,因此闭源大概是最糟糕的。
正如您在此方法中看到的,有三个级别标记为赤色。最深的点应该是第一个 if 条件中的嵌套 if/else 语句。通常,最深的一点是专注于单个逻辑,这使得重构更容易。
通过将方法分别为较小的方法或设置文件/数据库表来收缩方法

大概,在这种环境下,我们可以将其提取到私有方法中,如下所示:
2.png 下一个最深的点将是获取帖子数据并加载视图。现在,在重构其他部门后看一下方法add()。它更干净,可读和可测试。
始终在 if 语句中利用 {}

大多数编程语言都支持一行 if 语句,一些开辟职员利用它,由于它很简朴,但是,它不可读而且很容易引起题目,由于只有一个空行可以粉碎条件并开始瓦解。查察两个示例之间的区别:
4.png 不要利用幻数或把戏字符串:

在下一个示例中,您留意到假如房间凌驾 250,则会返回错误消息。在这种环境下,250 被视为幻数。假如你不是编写它的开辟职员,就很难弄清楚它代表什么。
为了重构此方法,我们可以盘算出 250 是最大房间数。因此,我们可以将其提取为变量$maxAvailableRooms,而不是硬编码它。现在,其他开辟职员更容易明确。
6.png 假如不必要,请不要利用 else-语句:

在类似的函数 availablerooms() 中,您会留意到 if 语句,在该语句中,我们可以轻松摆脱 else 部门,而且逻辑仍然类似。
7.png 为方法、变量和测试利用故意义的名称

在下面的示例中,您可以看到旅店管理体系中有两种方法,称为“index() 和 room_m()”。对我来说,我无法确定它们的目标是什么。我以为假如他们的名字是形貌性的,会更容易明确。
利用编程语言的最大功能

许多开辟职员没有利用他们利用的编程语言的全部功能。此中许多功能可以为您节省大量精神,并使代码更加结实。看看下面的示例,留意怎样通过仅利用范例提示来轻松地用更少的代码实现类似的结果。
10.png 末了,我想再先容一些关于更好编码的快速提示:
<ul>利用新的数组情势 [ ] 而不是旧的 array()。
利用 === 运算符而不是 ==,除非不查抄数据范例很告急。
为公共方法提供简短的形貌性名称总是一个好主意。私有方法的名称较长是可以的,由于它们的范围有限。
仅对实现接口示例 add() 的方法利用通用名称,并对单个类方法 addUser() 或 addDocument() 利用形貌性名称。
从类中删除未利用的方法。
利用前缀 is/has 与返回布尔值的函数 ex: isAdmin(
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 17:58, Processed in 0.199870 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表