Programming languages 如何以减少完全返工可能性的方式实现代码

Programming languages 如何以减少完全返工可能性的方式实现代码,programming-languages,modularity,Programming Languages,Modularity,我有一个工作被扔掉了,因为一个微小的规格变化,结果是没有得到正确的规格。如果它在项目开始时就已经完成了,那么大部分工作都将完成 有哪些好的技巧/设计原则可以防止这些事情发生 或者减少在实现过程中实现功能请求或设计更改所需的代码重新工作量?模块化。制作能够很好地完成工作的小代码块。然而,这只是开始。它通常是一个大的因素组合,导致代码非常糟糕,需要完全返工。从高度不稳定的需求,糟糕的设计,缺乏代码所有权,等等 补充其他人提出的内容:沟通。 您与客户、您与管理层、您与其他开发人员、您与QA部门之间的沟

我有一个工作被扔掉了,因为一个微小的规格变化,结果是没有得到正确的规格。如果它在项目开始时就已经完成了,那么大部分工作都将完成

有哪些好的技巧/设计原则可以防止这些事情发生


或者减少在实现过程中实现功能请求或设计更改所需的代码重新工作量?

模块化。制作能够很好地完成工作的小代码块。然而,这只是开始。它通常是一个大的因素组合,导致代码非常糟糕,需要完全返工。从高度不稳定的需求,糟糕的设计,缺乏代码所有权,等等

补充其他人提出的内容:沟通。

您与客户、您与管理层、您与其他开发人员、您与QA部门之间的沟通,每个人之间的沟通都是关键。确保管理层了解合理的时间框架,并确保您和客户都准确了解您的建筑是什么

花点时间与您为其构建产品的客户保持沟通。制定里程碑并设置时间,以便在每个里程碑向客户显示项目。即使当你展示一个里程碑时,客户对它完全失望,你也可以从头开始。这还要求您的工作构建在块中,这些块相互独立,正如Csunwold所述

  • 保持开放的沟通
  • 对产品的进展保持开放和诚实
  • 愿意每天根据客户的业务需求和产品规格进行变更

  • 正如csunwold所说,模块化代码非常重要。这样写的话,如果有一件容易出错,它就不会弄脏系统的其他部分。通过这种方式,您可以调试单个buggy部分,同时可以安全地依赖其余部分

    除此之外,文档是关键。如果您的代码被整洁而清晰地注释,那么将来对您或任何正在调试的人来说,重新编写代码将非常容易


    使用源代码管理也会有帮助。如果您发现一段代码不能正常工作,那么总是有机会恢复到以前的健壮迭代。

    尽管它不直接适用于您的示例,但在编写代码时,我会尽力留意我可以看到软件在未来发展的方式

    基本上,我试图预测软件将走向何方,但关键是,我抵制住了实现任何我能想象到的事情的诱惑。我所追求的只是让API和接口在不实现这些功能的情况下支持可能的未来,希望这些“可能的场景”能帮助我找到一个更好、更经得起未来考验的接口


    当然,这并不总是有效的。

    软件需求会发生变化,除了更频繁地与客户交互之外,人们对此无能为力

    然而,人们可以构建在变化面前更加健壮的代码。它不会使您免于抛出满足不再有人需要的需求的代码,但它可以减少此类更改的影响

    例如,无论何时应用,都应使用接口而不是类(或您语言中的等效类),并避免向接口添加操作,除非您完全确定需要它们。通过以这种方式构建程序,您不太可能依赖特定实现的知识,也不太可能实现您不需要的东西

    这种方法的另一个优点是,您可以轻松地将一个实现替换为另一个实现。例如,为原型编写和测试实现时,有时效率最低但速度最快,并且只有在原型是产品的基础且性能真正重要时,才最终用更智能的东西来取代它,这是值得的。我发现这是一种非常有效的方法,可以避免过早的优化,从而扔掉一些东西

    • 小迭代

    • 反复

    • 迭代之间的测试

    • 尽快获得一个简单的工作产品,以便客户能够提供输入


    基本上假设东西会被扔掉,所以适当地编码,不要深入到需要花费大量时间才能扔掉的东西上

    正如人们所说,模块化是答案。但这可能是一个很难在实践中使用的答案。 我建议将重点放在:

    • 能够很好地完成预定义任务的小型库
    • 模块之间的最小依赖关系
    首先编写接口是实现这两个目标的好方法(使用用于依赖项的接口)。接下来,在编写代码之前,针对接口编写测试,通常会突出显示非模块化的设计选择

    我不知道你的应用程序是否是UI密集型的;这会使模块化变得更加困难。它通常仍然值得付出努力,但如果不值得,那么就假设它不久就会被扔掉,并遵循冰山原则,即90%的工作与UI无关,因此更容易保持模块化

    最后,我推荐安德鲁·亨特(andrew hunt)和戴夫·托马斯(dave thomas)的《务实的程序员》(the Practical programmer),这本书有很多技巧。我个人最喜欢的是干巴巴的——“不要重复你自己”——任何说同一件事两次的代码都有味道。

    G'day

    在这里查看其他答案时,我注意到每个人都在提到下一个项目要做什么

    不过,有一件事似乎遗漏了,那就是进行一次清理,找出规范不同步的原因。符合c所需的实际要求