停止代码腐烂

时间:2009-01-20 13:59:07

标签: language-agnostic project-management

鉴于在任何给定时间点工作特征对公司而言都比良好代码更有价值,并且糟糕的代码使得添加更多功能变得困难:

如何阻止代码随着时间的推移而恶化?

在任何时候,获得一个功能都比使用经过精心设计的代码更长的优先级要高。即使随着时间的推移,每个功能的努力也会增加。

如何随着时间的推移阻止代码变成无法维护的软件?

7 个答案:

答案 0 :(得分:12)

一套全面的单元测试

编辑:如果编写得很好,可以用人类可读的方式准确测试所有类/接口,那就很有用了。

编辑2:正如svelil所说,重构你的代码以保持其清洁,但能够做到这一点是单元测试的结果。

答案 1 :(得分:11)

单元测试不会自行阻止腐烂。我仍然可以编写通过单元测试的可怕的,无法维护的代码。

更好的答案是单元测试。 +常规重构+同行评审(无论是在配对阶段还是之后) +标准

你知道没有银弹。

答案 2 :(得分:3)

使用迭代开发过程:

  1. 实施功能
  2. 重构代码
  3. 跳转到1。
  4. 你必须有一些纪律,但没有它你将最终弄得一团糟。即使你认为“哦,代码足够可读”,也不要跳过第2步。当然,开发应该始终伴随着测试。

答案 3 :(得分:2)

定期重构,特别是在您目前正在使用的代码部分(“童子军”规则)。

答案 4 :(得分:2)

这个问题的最高和接受的答案应该是“综合单元测试”。

这个答案不会重演。

然而,将单元测试添加到现有项目要困难得多,并且如果自己的应用程序代码是在考虑单元测试的情况下编写的,那么通常很难模仿可以实现的目标。

同样极端的时间表压力使得无法考虑,那些没有经历过使用单元测试的人仍然是一个大倾向。

我在这些条件下的建议是尽可能地写出来实现目前的目标。准备好在添加新功能之前重构现有代码。虽然单元测试会使这种方法更加安全,但即使没有单元测试,这种方法仍然有用。

当然,良好的一般测试和质量保证很重要。

答案 5 :(得分:1)

一套不错的编码标准。

它们不需要是完整的,但它们应该意味着你知道你的支撑缩进是什么,所以你没有多少考虑(这意味着代码匆忙而且格式不正确的地方将会像拇指一样突出)

答案 6 :(得分:0)

在我的工作中,当我们处理代码冻结时,有时需要“快速和肮脏”的方法。这通常导致一些非常狡猾的代码可以工作,但会冒犯你的眼睛。

然而,运输后立即有一段相对平静的时期。这是重新审视一些臭臭代码并将其变成一些形状的绝佳机会。

有助于保留您想要整理的区域列表,并为它们分配某种优先级。尽管你相信自己的记忆有多好,但你会忘记。

这种方法对我来说效果很好,但我认为这取决于您的特定项目工作流程。