C ++:我的项目开始时的代码质量明显较差

时间:2011-02-22 19:13:09

标签: c++ refactoring project-management

几个月前我开始了一个相当大的2D游戏引擎项目,我开始注意到:

前一个或两个月的代码与最近的代码完全不同:

  • 变量的命名感觉有点不同
  • 一些代码风格方面不同
  • 我有时想知道为什么我用这种方式命名一些函数,并且很容易想到一个更好的名字
  • 代码感觉相当混乱
  • 有些部分几乎可以立刻找到一种更好的方法来实现它

  • 代码似乎质量明显较低

但是,在我写这篇文章的时候,我正在注意尽可能地像现在这样做。

现在,我的问题:

  • 这是一种常见情况,即使在大型商业项目中也是如此?

  • 我是否应该考虑投入(大量)时间进行重构,甚至可能重写受影响的代码?

  • 随着项目的发展和变化,大部分代码必须从头开始重构或重写,这是正常的吗?这不好吗?

6 个答案:

答案 0 :(得分:9)

这是一种常见的情况,即使在大型商业风格的项目中也是如此?

我是否应该考虑投入(大量)时间进行重构,甚至可能重写受影响的代码?

你明天也会这样做吗?

没有。除非您实际处理要重构的代码,否则不会。

随着项目的发展和变化,大部分代码必须从头开始重构或重写,这是正常的吗?

这不好吗?

如果我们完美无缺,那肯定会容易得多,是的。

答案 1 :(得分:4)

是的,这也是我项目的常见模式。 ABR:永远在重构。当我觉得出现了新的模式时,我会尝试更新旧代码以匹配它。随着项目的发展,您在问题领域工作的经验会影响您的风格,并且更新旧代码以匹配它也是个好主意。

作为必然结果,如果您的第一个项目提交在几个月之后仍然在您的项目中保持不变,那么就会出现问题。我将开发视为一种探索性实践,其中很大一部分是更新旧代码并改变您的风格。在开始编码之前,没有人知道他们的最终设计/ API。找到任何大型开源项目并查看其提交历史记录;它无处不在。

如果你曾经在绘画或绘画上工作一段时间,那么你的风格会越长越精致。此外,您的第一层或前几张草图很少是最终结果中出现的墨水线。

答案 2 :(得分:3)

从这次经历中得到的一个重要教训:你会变得更好。或者,至少,你正在改变。当然,从今天的角度来看,你今天写的代码看起来更好。如果您回写的代码今天看起来很糟糕 - 让它看起来更好。你今天的责任不仅仅是你今天写的代码;它是整个代码库。所以说得对 - 很高兴你变得更好。

答案 3 :(得分:3)

是的,这种情况发生了。我甚至会说,当您深入研究解决方案时,这是预期和典型的。

只有在您返回并触摸它时才更新您的代码。在调整之前不要忘记编写单元测试。

无缘无故地重写坏代码非常诱人,特别是当你没有截止日期临近时。你很容易陷入这种循环中。

请记住,送货是一项功能。

答案 4 :(得分:2)

这是一种常见情况,即使在大型商业项目中也是如此?

我必须在此承认,我的信念是,如果您先设计并稍后编码,您可以避免许多问题。所以我想在这里说它取决于。如果一个好的设计开始有一些公司标准,以确保基于设计的代码遵循相同的重要规则,无论谁写它,那么至少你有机会避免这种情况。但是我不确定是否总是如此: - )。

我是否应考虑投入(大量)时间进行重新分解,甚至可能重写受影响的代码?

让事情变得更好永远不会受到伤害: - )。

随着项目的发展和变化,大部分代码必须从头开始重新计算或重写,这是正常的吗?这不好吗?

我会说是的,当结果代码优于旧代码时,通常认为重新分解是一件好事。世界永远不会保持不变,即使某些时候某些东西是合适的,也可能是因为它无法满足当今的需求。所以我会说,如果你工作的公司会对你说:“你不能重新考虑这些代码。这是神圣的”。变化(如果变得更好)总是好的。

答案 5 :(得分:1)

弗雷德布鲁克斯写道,“建立一个扔掉,无论如何你会。”虽然它不像以前那么真实,但是在你开始研究这个问题之前,真正理解这个问题并不常见。