在船舶之前或之后重构?

时间:2010-09-12 18:37:29

标签: language-agnostic refactoring shipping

在一个大多数出货日期都由业务需求决定的世界中,程序员通常会提供有效的代码。通常,当您知道代码工作时,发布的代码的结构和效率都没有实际意义。除非指定了生产质量(例如api到算法),否则对于运行到几百行的代码,可交付代码等于有效的代码。

我的问题是:为功能提供ETA,您会编码直到功能完成并完成吗?或者你会让它尽快工作并重构发布质量?

我倾向于后者虽然听起来更像是工作。当有效的代码被用于算法效率和模式时,将它们放在一起是一种快乐的体验。此外,它获得了所有非功能性的爱 - 更少的错误,高性能,可扩展,安全..我不认为我擅长第一次编写最好的代码。所以这种方法适合我。

我想知道哪一个更受欢迎,为什么?我不是在寻找行业范围的方法,只是个人的倾向,所以我可以衡量思想的相似性。

7 个答案:

答案 0 :(得分:6)

我希望在发货之前之前进行重构。

推迟任何重构,直到发布后听起来非常像你可能永远不会真正去做(通常情况下,会出现更具商业关键性的东西)。但即使你在发货之前这样做,也不是说你的代码是完美的,而且你的东西也没有改进。所以之后也是(只要代码保持到任何程度)。

对我而言,将代码重构为更简单,更清晰的代码是任何软件开发工作中不断自然的一部分。

编辑:显然,在特定时刻决定how much and for how long you refactor时,您需要考虑业务限制。

编辑2:至于“如何说服我的经理重构”(请参阅​​评论)这里有一些可能有用的资源:

答案 1 :(得分:3)

在我们的团队中,我们认为未重构的代码不是“完成”。换句话说,“代码已被重构”是我们完成定义的一部分,它是我们可发送代码的标准之一。

答案 2 :(得分:3)

问题是,如果您在发货后只倾向于重构,那么您将永远不会这样做;)

我倾向于看到'完成'包括考虑周全的代码。

如果存在涉及高努力的非常大规模的重构,则该规则有例外。为了满足截止日期,您可以进入下一个开发迭代。

答案 3 :(得分:2)

如果您正在进行测试驱动开发。通常你会编写最简单的东西然后重构,因为添加了额外的功能(AKA Red,Green,Refactor)。

但这个问题显然有一个很大的灰色区域。如果您发送的是一个难以维护的混乱,那么您可能应该首先回顾一下如何编写代码。应该为某种目的进行重构 - 例如,使代码更灵活,以允许新类型的产品。不要因为你觉得应该重构而重构。

答案 4 :(得分:1)

我希望在装运前重构一下。你是对的,我的第一个代码往往不是最好的设计。但是,如果您对代码进行了通过测试,则之后直接重构的风险应该很小。

以后这样做的问题只是“在发布之后如果发布之前”。根据我的经验,没有理由希望在发布后有时间进行清理。

答案 5 :(得分:0)

对我来说,重构应该在发货后完成,确保所有功能都有效,并将其留给代码构建的下一次迭代。如果您在发货之前开始操作代码,则最终可能会进行一些优化,最后会留下无效的代码。

答案 6 :(得分:0)

我最初尝试编写最好的代码但总是发现一旦进入生产,重构就不可避免了。由于用户反馈,通常在代码发布后进行重构是常态。