CQ备忘录

一间存放故事的仓库

GitHub LinkedIn
3 September 2020

Tech:为什么需要持续重构代码?

by ChenQi

Quora 的一个好问题和好答案,转载机翻记录之。
Answerer:
Mario Galindo Queralt
Ph.D. - Artificial Intelligence Researcher and CEO at PAITI

先讲一个真实的故事:《因为答案已经改变》

阿尔伯特·爱因斯坦(Albert Einstein)在普林斯顿任教的某一年,到了考试时间。当爱因斯坦将试卷交给他的助教时,助教指出,那是爱因斯坦前一年为那门课准备的同一张试卷。助教问:“这跟您去年上这堂课的考试不一样吗?” 。“是的。” 爱因斯坦回答。助手大胆地追问:“但是为何连续两年使用相同的试卷?” 。爱因斯坦回答:“ 因为答案已经改变了” 。

在计算机科学中,类似的事情持续发生。任何软件都可以视为某个问题的答案。问题在于,针对同一问题的正确答案一直在变化。例如,想象一个游戏,因为人和竞争的因素,该游戏必须一直进化,永远需要更好的游戏。看看飞行模拟游戏,作为一个简单的游戏示例。该游戏必须一直进行重构,否则将会消失。

扪心自问:你想继续使用 Windows 95 吗?

这一点在计算机行业非常重要:要知道从来没有第一次编写完成后,就绝不修改的软件。所有程序必须设计成可以随时重构的架构。软件架构失败的主要原因就是没有做到这一点。

第一次编写软件相对容易,困难的是编写该软件以便对其进行持续性修改。但是这恰恰是所有程序员都应该做的,并且是区分好程序员与差程序员的标准,即编写其他人未来可以轻松修改的程序的能力。

相信我,除了能够轻松重构升级软件的能力,编码效率绝对是程序员最重要的能力,正因为如此,并且仅因为如此,程序员才能编写出清晰易懂的代码。

不易重构的程序必将很快变得无用。因此,任何效率也将无从谈起。相反,效率低下但易于重构的代码可以比较轻松地重构以使其高效:)。

记住:现状是有很多人反应敏捷,行动迅速,然后直奔失败而去。比速度更重要的是方向。程序的一生就像驾驶汽车,要使其保持在路上,必须始终移动方向盘。

tags: