2008-09-09 50 views
0

我目前正在重建我的本地Subversion版本库,方法是添加一些新项目,并将旧版代码和旧版代码库中的数据合并到一起。你如何看待遗留代码(和数据)?

当我在过去完成这项工作时,通常会将遗留代码放在专用的“遗留”文件夹中,以免“干扰”新的和“结构良好”的代码树。但是,本着重构的精神,我觉得这有点不对。理论上,遗留代码将随着时间的推移而重构,并移至新的位置,但实际上这很少发生。

你如何对待你的遗留代码?尽管我很愿意将旧的罪孽藏在“遗产”文件夹中,但绝不要再看它,在某种程度上,我希望通过迫使它在存储库中的更“健康”的居民中生活,也许遗留下来代码将有一个更好的机会有一天会好起来?

(是的,我们都知道we shouldn't rewrite stuff,但是这是我的“好玩”的容器,而不是我的经营项目...)

更新

我并不担心饲养技术方面跟踪各种版本。我知道如何使用标签和分支。这更多的是心理方面,因为我更喜欢在存储库中有一个“整洁”的结构,这使得人类更容易导航。

回答

4

有一天所有的代码都会变成'传统',为什么要把它分开呢?源代码控制是通过项目/分支或项目/平台/分支和该类型的层次结构。谁在乎牙齿有多长时间?

2

标记是颠覆中非常便宜的操作。当你开始重构时,并且在你一直处于正常阶段时,标记你的代码。这样,仍然可以轻松地访问旧的(但功能性的代码),作为您闪亮的新代码(但代码不正确)的参考。 :-)

1

使用外部定义svn:externals属性)像您将第三方存储库一样引用您的遗留代码。

然后,您可以将您的重构工作从您的相关项目中分离出来,并且(使用固定版本引用(例如-r1234))非常明确地说明依赖项目依赖于哪个修订版本的遗留代码。

1

这里是免费的心理分析:

你在这里什么是一个根深蒂固的愿望来解决您的旧代码,以便它不是传统了。当你把它藏起来时,你只是在压制这种欲望,试图避免它,因为这是一种不舒服的感觉。如果你把它放在外面,两件事情中的一件将会发生:它最终会让你疯狂,你必须自杀,或者(更乐观地),你会被提醒每一个凌乱的事情,直到你最终分解并清理它。

不要掩盖混乱;打扫。否则它迟早会回来咬你。

1

这取决于你所称的传统。如果通过说遗产你真的意味着'从一些退休的应用程序的代码是如此糟糕,我们将永远不会再使用它'它应该从你当前的代码分开。 如果它来自您当前的项目,但是由其他人编写或不符合您当前的标准,请仅正常处理它,但将其标记为未来在问题跟踪器中进行重新分解。

+0

它有所不同。有些是“我应该尽快重构它,但它很无聊,所以我一直在推迟它”,还有一些是“我十年前写的,希望保留它以防我需要再次做类似的事情或者我只是觉得怀旧,并想看看旧代码“。 – 2008-09-18 18:27:51