Language agnostic 阻止代码腐烂

Language agnostic 阻止代码腐烂,language-agnostic,project-management,Language Agnostic,Project Management,考虑到在任何给定时间点,工作特性比好的代码对公司都更有价值,而坏的代码使添加更多特性变得困难: 如何防止代码随着时间的推移而恶化 在任何一点上,让一个特性工作都比让它与需要更长时间的精心设计的代码一起工作具有更高的优先级。即使随着时间的推移,每个功能的工作量也会增加 如何阻止代码随着时间的推移变成不可维护的mush?一组全面的单元测试 编辑:如果它们编写得很好,能够以人类可读的方式准确地测试所有类/接口,这将非常有用 编辑2:正如斯维尔所说,重构代码以保持干净,但能够做到这一点是单元测试的结果。

考虑到在任何给定时间点,工作特性比好的代码对公司都更有价值,而坏的代码使添加更多特性变得困难:

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

在任何一点上,让一个特性工作都比让它与需要更长时间的精心设计的代码一起工作具有更高的优先级。即使随着时间的推移,每个功能的工作量也会增加


如何阻止代码随着时间的推移变成不可维护的mush?

一组全面的单元测试

编辑:如果它们编写得很好,能够以人类可读的方式准确地测试所有类/接口,这将非常有用


编辑2:正如斯维尔所说,重构代码以保持干净,但能够做到这一点是单元测试的结果。

一套不错的编码标准


它们不需要是完整的,但它们应该意味着你知道像括号缩进这样的东西是什么,这样你就不用想太多了(这意味着代码仓促而格式不正确的地方会像拇指痛一样突出)

定期重构,特别是在您当前工作的代码部分(“童子军”规则)。

使用迭代开发过程:

  • 执行功能
  • 重构代码
  • 跳到1

  • 你必须有一些纪律,但没有纪律,你最终会陷入混乱。即使您认为“哦,代码足够可读”,也不要跳过第2步。当然,开发应该始终伴随着测试。

    在这个问题上,最重要和公认的答案应该是“全面的单元测试”

    这个答案不会重复

    然而,将单元测试添加到现有项目中要困难得多,而且通常很难模仿在编写应用程序代码时考虑到单元测试的效果

    极端的进度压力也不可能考虑,那些没有经历过单元测试的人仍然是一个大的庞德。

    在这些条件下,我的建议是尽你所能来实现当前的目标。在添加新函数之前,请准备重构现有代码。虽然单元测试会使这种方法更加安全,但即使没有单元测试,这种方法仍然很有用


    当然,良好的通用测试和QA很重要。

    单元测试本身并不能阻止失败。我仍然可以编写通过单元测试的可怕、无法维护的代码

    更好的答案是单元测试+定期重构+同行评审(在配对阶段或之后)+标准


    你知道没有灵丹妙药。

    在我的工作中,当我们接近代码冻结时,“快速而肮脏”的方法有时是必要的。这通常会导致一些相当狡猾的代码,这些代码可以正常工作,但会冒犯您的眼睛

    然而,在装船后,马上会有一段相对平静的时期。这是一个绝佳的机会,可以重新审视那些臭烘烘的代码,并将其塑造成一个小样子

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


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

    还需要集成测试、功能测试和UI测试;)-这些将确保代码正常工作。我更多地考虑了代码的可维护性。测试将帮助您保持代码的功能,但它不会帮助您保持代码本身的可维护性。都说出来了