鉴于在任何给定时间点工作特征对公司而言都比良好代码更有价值,并且糟糕的代码使得添加更多功能变得困难:
如何阻止代码随着时间的推移而恶化?
在任何时候,获得一个功能都比使用经过精心设计的代码更长的优先级要高。即使随着时间的推移,每个功能的努力也会增加。
如何随着时间的推移阻止代码变成无法维护的软件?
答案 0 :(得分:12)
一套全面的单元测试
编辑:如果编写得很好,可以用人类可读的方式准确测试所有类/接口,那就很有用了。
编辑2:正如svelil所说,重构你的代码以保持其清洁,但能够做到这一点是单元测试的结果。
答案 1 :(得分:11)
单元测试不会自行阻止腐烂。我仍然可以编写通过单元测试的可怕的,无法维护的代码。
更好的答案是单元测试。 +常规重构+同行评审(无论是在配对阶段还是之后) +标准
你知道没有银弹。
答案 2 :(得分:3)
使用迭代开发过程:
你必须有一些纪律,但没有它你将最终弄得一团糟。即使你认为“哦,代码足够可读”,也不要跳过第2步。当然,开发应该始终伴随着测试。
答案 3 :(得分:2)
定期重构,特别是在您目前正在使用的代码部分(“童子军”规则)。
答案 4 :(得分:2)
这个问题的最高和接受的答案应该是“综合单元测试”。
这个答案不会重演。
然而,将单元测试添加到现有项目要困难得多,并且如果自己的应用程序代码是在考虑单元测试的情况下编写的,那么通常很难模仿可以实现的目标。
同样极端的时间表压力使得无法考虑,那些没有经历过使用单元测试的人仍然是一个大倾向。
我在这些条件下的建议是尽可能地写出来实现目前的目标。准备好在添加新功能之前重构现有代码。虽然单元测试会使这种方法更加安全,但即使没有单元测试,这种方法仍然有用。
当然,良好的一般测试和质量保证很重要。
答案 5 :(得分:1)
一套不错的编码标准。
它们不需要是完整的,但它们应该意味着你知道你的支撑缩进是什么,所以你没有多少考虑(这意味着代码匆忙而且格式不正确的地方将会像拇指一样突出)
答案 6 :(得分:0)
在我的工作中,当我们处理代码冻结时,有时需要“快速和肮脏”的方法。这通常导致一些非常狡猾的代码可以工作,但会冒犯你的眼睛。
然而,运输后立即有一段相对平静的时期。这是重新审视一些臭臭代码并将其变成一些形状的绝佳机会。
有助于保留您想要整理的区域列表,并为它们分配某种优先级。尽管你相信自己的记忆有多好,但你会忘记。
这种方法对我来说效果很好,但我认为这取决于您的特定项目工作流程。