关于重构的短暂警示故事

2021-03-21 14:06:31

本周我正在制定码Base的一部分的变化,我不熟悉。读取代码时,我发现了一个内联的PNG图像。这不是一个小图标,但大小约为100kb的图像。我搜索了该项目,并在几个不同的组件中找到了相同的内联图像。也许是因为我需要一些咖啡,但在那一刻,我无法想到这种方法的好理由。由于内联图像的组件非常相似,我猜测它们彼此复制,内联图像只是您在遗留代码中找到的那些奇怪的事情之一。

我从Base64解码了嵌入式图像,并从中创建单独的PNG文件。最后一步是用新图像文件的相对路径替换带内线的图像源。该提交的差异几乎是完美的:删除代码的大红色块,只有几条绿线的添加代码。一个快速简便的重构胜利和男性侦察规则的教科书示例。或者我想。

我休息一下,抓住了一些需要的咖啡。快进几个小时,我完成了我最初工作的任务。当我注意到一个错误时,我是在测试的最后阶段。在那个同一时刻,我也意识到内联图像的确切目的。猜一下?

要为您提供更多的上下文,我们将使用与图像的组件显示为显示错误消息。这张照片是公司吉祥物的可爱插图,表达了“哎呀出了问题”。可能发生的可能性之一,是用户丢失它们的连接或脱机。因此,当发生这种情况时,渲染仍然需要下载图像的组件,图像将无法加载。哦,是的......♥

我以为我在职业生涯中早些时候已经学到了艰难的方式,而不是假设我知道比原作者更了解。当然,有一个经验丰富的编码器(即,来自几年前的自己)在一个特征或某人不得不削减角落的情况下(例如,从事截止日期)。但通常情况下,有一个充满原因的人为什么有人采取了他们所做的方法。

幸运的是,在我推动分公司之前,我发现了这个问题。我可以使用git reset --soft并改变我的更改。我将环列的图像提取到单独的反应组件中并在需要时使用它。这样,我们仍然获得两个好处:错误组件是更清晰的更清晰,更容易读取,内衬图像位于一个地方。之后,我重新申请了所有其他罪行。 Git历史很干净,我的同事都不是更聪明。除非他们正在阅读这一点,在这种情况下:“哦,嘿,怎么样?” 😅

我知道,这个虫子不会成为世界的尽头。但这个小的例子表明,即使是我们的重构意图也有多弊大于良好。如果您发现自己看一段看起来很奇怪或不必要的代码,请询问您的同事。如果原作者仍然在公司,这尤其如此。您可能缺少一些上下文,您将获得新的东西。或者您可以确实可以改进代码,在这种情况下,原作者可能会学到更好的方法。在这两种情况下,这是一个胜利。此外,如果目前的方法有很好的理由,请记录它。添加更多描述性名称或评论以避免将来混淆。

在制作重构之前从我的小错误和研究中学习。 对于更大的变化以及编辑项目的核心文件时,这是10倍。 最重要的是:在开始之前别忘了喝点咖啡。