重构与重写

在内部看到的评论, 觉得很有道理,记录下:

重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解下,降低其修改成本。

重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

软件工程中有个词叫 【software rot】 —— 代码腐烂。意指,软件代码在长期维护中,由于各种原因,慢慢变的混乱不堪,这是一个缓慢的过程。

那么『重写』能解决问题?我认为不能,至少不能从根本上解决(只能临时解决),而且成本和风险很高。这么大的变动,如何确保原有系统的所有领域知识都被正确实现?要了解代码腐烂的原因,完全会发生在新重写的版本上,过一年两年后,烂了再重写?

所以应该使用『重构』的技术,融入到日常开发生活中。每当嗅到坏代码的味道【code smell】、坏设计的味道【design smell】、反模式【anti-pattern】,就应该进行重构,以此循序渐进,边重构,边生活。来维护代码的质量。在软件的整个生命周期中,保持对代码的爱惜。

而等到代码烂到实在没人看的懂,没人敢动手修改的时候,再重写一次,这样的实践在我心中不能叫做『重视代码质量』。

原文地址:https://www.cnblogs.com/linyx/p/9950974.html