我正在开发一个项目,该项目的代码库大约有 3500 个文件,可能比实际少了几百个。这个项目是用 PHP 制作的,非常困惑,在这种情况下,这意味着文档很难理解 OOP,过程编程是混合的,依赖关系不清楚,并且那些创建该系统的人是初学者程序员所需要的一切。
说实话,他们所做的事情令人印象深刻,这是一个可行的产品等等。但调试和添加新功能确实是一件苦差事。
现在我的问题是,我们是否应该重构整个项目或进行完全重写,有哪些好的标准。我应该提到,在我们进行过程中重写系统的某些部分可能是不行的,因为一切都是相互依赖的。
最佳答案
如果应用程序很大、成功并且做了有趣的事情,则尝试手动重写它可能会失败。重写永远不会有足够的质量来取代原始版本,并且在它取代之前你不能扔掉原始版本,这意味着你将继续增强原始版本,直到替代品准备好为止。工作量增加了一倍,没有附加值(value)。保留应用程序并清理它可能会更好。
您可以考虑两种想法来帮助减少代码库的大小:
对代码运行测试覆盖率。通常人们使用它来验证应用程序功能,但如果您运行测试覆盖率并只是长时间运行应用程序代码,它会告诉您哪些代码未执行,因此可能已失效。如果系统一团糟,它可能有很多死代码,这是找到候选代码的简单方法。有一些测试覆盖率工具可以以较低的开销收集整个应用程序的数据;您可以在生产代码中使用它们。
运行克隆检测器。这会发现重复的代码。完全重复很容易删除。一个好的克隆检测器不仅会发现相同的克隆,还会发现参数克隆,即已复制/粘贴/编辑但可以用参数进行总结的代码。参数克隆需要更多的技巧来删除,但是找到它们会告诉您可能丢失的抽象,并且删除它们(通过替换为对象或方法)会将这些丢失的抽象插入到您的代码中,从而使涉及该想法的进一步维护变得更容易。 (这不是一个众所周知的事实,但如果您确实使用测试覆盖率来验证功能,克隆删除也会提高测试覆盖率!)
关于php - 选择重构而不是完全重写的标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13819051/