重命名代码_旧代码到可测试代码1:重命名

重命名代码

512px-Hello_my_name_is_sticker.svg 这篇文章是“从旧代码到可测试代码”系列的一部分。 在本系列中,我们将讨论在为遗留代码编写测试之前进行重构的步骤,以及它们如何使我们的生活更轻松。

重命名很容易,而且通常很安全。 大多数IDE都具有该功能,并且大多数语言(我不是在谈论您,C ++)有助于安全重命名。

为什么要重命名? 它有助于使代码更易于理解。 当我们可以更好地理解代码时,我们编写的测试将更加有效。 换句话说:不要为您不了解的代码编写测试。

重命名是轻松实现的目标。

命名事物可能是编程中最难的事情。 许多代码变得复杂,因为我们将“ Manager”作为类后缀。 就像给自己权限为我们不知道放在哪里的代码腾出空间。 但是,它并不只限于一堂课。 一旦有了AccountManager类,很快就会出现BankManagerCustomerManager 。 对于getValidCustomer方法来说也是如此,它实际上应该是一个void方法,但是返回成功代码。 当我们草率时,我们允许通用的,令人困惑的名称在代码中蓬勃发展。 当名称含糊不清时,各种各样的实现都会涌入。

我是否编写代码都没关系,还是有人不在这里工作了。 遗留代码始终可以改进。

我们编写测试的主要目标之一就是改善代码。 但是不费吹灰之力就可以安全地改进代码是一种好处。 风险是关键。 如果IDE可以安全地进行重命名,则我们更有可能这样做。 另一方面,如果我们需要依靠手动更改,那么我们将不会。

通常,在进行测试前重命名时,我们将更多地集中在方法名称上,或者可能在代码中使用变量。 这些通常足够小,可以挑选好名字(如果不够用,可以提取出来)。 重命名类通常比较困难,因为它们通常覆盖更多的领域(请记住,孩子们是怎么回事?)。

在测试之前,重命名是我们熟悉代码的一部分。 即使我不知道要测试什么 ,使代码可读也可以帮助我不仅了解它的功能,还帮助我测试方法。

重命名变量

如果有的话,我们通常按范围命名。 进行区分有助于理解。 如果代码中已经有约定(例如字段的m_前缀),请确保所观察的代码中遵循了约定。 如果没有约定,则开始约定。

将变量的类型与方法及其类型进行比较。 如果可以改进,请重命名。

例如:

Acct a = BankManager.getAccount();

我们可以将a重命名为account而我们不需要记住在我们的方法的下500行中a是什么。 如果返回值的方法似乎令人困惑,则其类型可以帮助您重命名它。

不要跳过元音! 它起初是节省屏幕空间的聪明方法,但是在元音消失之后,我们考虑了其他选择,很快我们就剩下了: acct。 不仅可读性差,而且令人讨厌。 使代码可读。

除了重命名之外,如果可以整理代码,请将声明放在类或方法的开头的一个区域中。 如果发现声明四处散布,请清理干净。

重命名方法

由于前面提到的草率,方法很难重命名,因为它们倾向于做更多的事情。 我们通常以一个简单的名字开头,然后找到该方法做更多事情的最佳位置。 我们很快有了一个大方法,一个名字让我们想起了当时的方法。

这使读者感到困惑,当然也使测试变得更加困难。 但是我们还没有。 现在,使重命名变得简单:如果该方法返回带有get前缀的内容 如果这样做,请确保它以动词开头,例如setmakecall。

检查方法的最后几行或退出点。 通常(并非总是如此),从结构中您将看到函数的用途。 尝试使名称适合目的。 虽然可能并非总是如此,所以要小心。

不要跳过元音! 不用担心屏幕空间。 使方法名称传达其目的,并使用整个字母。

重命名课程

这些是很难重命名的,并且我通常建议不要重命名(至少要等到将它们缩小到一定大小时才这样做)。 我们只在声明或创建时看到类型,因此重命名它们不会给我们带来很多好处。

在名称中标识基类或派生类可能是有益的。 例如,在添加第三个层次结构层时,通常不会,并且以后很讨厌。 我仍然喜欢接口的前缀I ,尽管它可能使我在某些社区中丧命。 并永远记住孩子:

不要跳过元音! 也适用于类。

现在我们已经完成了重命名,现在是提取时间。 接下来。

翻译自: https://www.javacodegeeks.com/2014/10/legacy-code-to-testable-code-1-renaming.html

重命名代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值