所以我有一个预算来清理我从另一个程序员那里继承的代码。代码形状非常糟糕,有很多文件没有被使用,有很多功能没被使用。它实际上看起来像线性编程而不是面向对象。我的问题是我是否应该
a)清理代码,重新构建代码,并尝试删除所有未使用的资源 b)从一个新的框架(它使用codeigniter)开始,并复制运行所需的文件
我喜欢选项b,因为它让我想起了最好买的新笔记本电脑。我可以花时间删除所有的英国媒体报道或者进行清除并从头开始创建系统,我总是这样做。唯一的问题是,这一次,还有更多的涉及,然后只是创建一个新的系统。以下是优点和缺点:
很多人说我错过了一个重要的部分,预算(时间和金钱)。我们确实有一个不错的预算,但我的项目经理愿意继续,如果它确保一个更稳固的系统,更快的周转时间新功能。我很难量化预算,因为你还没有看到代码,所以给小时没有帮助,这就是为什么我没有说预算的原因。我想从你的预期来看,考虑这个预算可以兼顾两种解决方案。
答案 0 :(得分:2)
清理别人的代码可能是一场噩梦。如果你真的可以选择并且利益相关者同意,我强烈建议你重新开始。
我去年有这样的经历,到目前为止,软件仍处于非常糟糕的状态,几乎不可能跟踪程序员从我们继承代码时所犯的每一个错误,并花费大量时间来支持隐藏的错误和东西。
答案 1 :(得分:2)
我想这在某种程度上取决于你的时间限制以及你需要多么密切地了解这个项目。
我刚刚完成了由数学专业的研究生编写的一些代码的重组。聪明的家伙,但他不是程序员,正如你所说,代码非常线性。长话短说,我重写了大约90%的代码,花了更多的时间来完成它比我想要的更多。 我可以更快地从头开始,使用他的代码作为参考。不仅如此,如果我计划进行尽可能多的更改,我会更多地考虑重组过程。从好的方面来说,我现在知道这里的所有代码和概念项目很好。
另一方面,如果您不打算进行许多更改或不得不维护代码,那么可能不值得麻烦。把它变成一个可用的状态,然后塞进地毯下,可以这么说。
我的2美分......
答案 2 :(得分:2)
混合方法通常效果更好。保留金块并抛弃其余部分。即使在最糟糕的项目中,也很可能会有一些非常有效的代码。此外,重写并且已经运行良好的事情,你可能只是稍微清理一下。
确定要保留什么需要一点判断,但你可以通过这种方式获得最好的效果。
答案 3 :(得分:2)
这个问题让我想起了乔尔在一段时间前读过的文章。
唯一最糟糕的战略错误 任何软件公司都可以: 他们决定重写代码 刮擦...读取代码比读取代码更难 写它。