【发布时间】:2010-12-24 15:24:09
【问题描述】:
假设你有一个写得很糟糕的项目,包含很多代码异味、wtfs 等。此外,它的代码结构非常复杂,很难向其中添加任何新功能。另一方面,该项目按预期工作。
您想重构项目,或许将其移至新框架,您将如何解决这个问题?您会尝试从头开始构建一个新项目,还是使用一些技术(指定)将工作项目转换为新项目?
我想稍微澄清一下这个问题,因为我所说的“重构”是什么意思有点混乱。
我将举一个关于汽车的例子,把它想象成一个软件项目。假设您已经制造了自己的汽车。它的结构很奇怪:发动机是倒置的,因此所有管道的铺设方式都不同,电线缠在一起,没有人知道它们从哪里开始或结束,等等。
但是,一切正常:您可以轻松地骑着它去购物、工作等。但是,它的油耗有点太高了。此外,如果您想为其安装新的前灯,那将是一场灾难,因为电线上的所有东西都是一团糟。
你买不起一辆新的,所以你必须以某种方式重构汽车:将发动机位置改为正常,整理电线等。你需要这样做,因为迟早你需要更换发动机,大灯,安装新的音响等等。另一方面,你仍然需要一些东西来驱动你每天早上上班,所以你必须确保你不会把所有事情都搞砸。
现在让我们回到项目。您将如何重构像上面的汽车一样复杂的项目,同时又不影响其主要功能和目的。
我也想让它成为一个社区维基。请编辑。
目前主要趋势是:
- 不要从头开始写一个新的
- 对它进行单元测试,然后开始重构小块
- 阅读Working Effectively with Legacy Code (Robert C Martin)
链接:
【问题讨论】:
-
感谢您的更新!我要问的另一个问题是:不打破汽车有多重要?在被告知停止更改之前,您可以引入和修复多少错误?
-
好吧,你需要它在第二天骑它时工作。所以你应该始终保持它尽可能好。
标签: refactoring