Documentation 如何确保正确重用代码?

Documentation 如何确保正确重用代码?,documentation,communication,code-reuse,Documentation,Communication,Code Reuse,通常,当我们在应用程序中引入一个新特性时,我们可能会产生工件,例如可以在应用程序的其他领域重用的有用方法或类。这些工件不一定记录为功能需求,因为它们通常是我们实现选择的副作用。由于我们经常在团队中开发,因此共享这些代码片段以防止返工和重复非常重要 示例: 实用程序方法和类 基层 接口 GUI控件 您发现共享这些工件的最有效方式是什么 你如何传达你在创建这些假设时所做的假设 您如何确保正确使用它们 我对围绕文档、代码图、会议(?)的最佳实践和经验证的技术感兴趣,以确保正确重用代码 这个问题非常

通常,当我们在应用程序中引入一个新特性时,我们可能会产生工件,例如可以在应用程序的其他领域重用的有用方法或类。这些工件不一定记录为功能需求,因为它们通常是我们实现选择的副作用。由于我们经常在团队中开发,因此共享这些代码片段以防止返工和重复非常重要

示例:

  • 实用程序方法和类
  • 基层
  • 接口
  • GUI控件
您发现共享这些工件的最有效方式是什么

你如何传达你在创建这些假设时所做的假设

您如何确保正确使用它们

我对围绕文档、代码图、会议(?)的最佳实践和经验证的技术感兴趣,以确保正确重用代码


这个问题非常类似于:但我对一种更主动而非被动的方法感兴趣。

用断言测试您的前提条件

除此之外,考虑一些单元测试,以检查您的代码是否足够健壮,能够处理不常见或意外的情况


对于其余部分,确保每个人都真正理解代码的功能,至少在黑盒级别上是这样。在人们开始使用新代码时,与白板进行一次简短的会议,并进行一些结对编程。

我们是一个.Net团队,所以这对我们来说很有效


我们为我们认为常用的函数创建了自己的类库。比如计算一个Luhn Mod 3校验位,创建一个正则表达式来验证一个地址,该地址将放入一个包含n个字符的数据库字段,等等。诀窍是能够识别可能被重用的代码并将其放入其中。我们是一个Java开发团队,同样适用于我们。我们在SVN中创建了各种标题下的实用程序项目,例如XML解析、向量处理,可重用代码被检入这些实用程序库并在其他项目中重用。

查看一本关于您编程语言的最佳实践的书。应用它们,看看什么是有效的,并相应地进行调整。基本上,一个好的、干净的、简洁的接口/api有很长的路要走。还要编写大量单元测试来涵盖不同类型的功能。还可以查看您的语言/平台中的内置库,或者查找库的良好示例,看看它们的接口如何。

在这方面完全缺乏经验,理想的情况可能是在团队之间创建一个共享版本控制系统。然后在几次最初的组织/意识会议之后,将共享仓库视为一个人们可以参与的开源项目。所以,看看几个案例:

  • 您编写了一些要共享的代码:这需要在仓库中为代码创建一个新的区域,添加一些基本文档、测试、代码清理等。但是如果它被认为是“公共的”,那么就有动机正确地执行它

  • 您希望使用高质量的代码:听起来像是一个不错的库,但有一些限制。您可以添加更多的文档、测试和额外的函数,等等

  • 您想使用代码,但这是垃圾:您需要与原始开发人员聊天。然后对代码进行一次大的返工,但这仍然比重新发明轮子稍微好一些。完成后,两个团队都会受益


  • 诀窍是让所有这些都成为公众的知识。所以你需要每个团队中的冠军来推动人们重用和贡献。这是你从第一轮会议中得到的。假设开源模型是一个经过验证的实践,如果你有冠军,它没有理由不能工作

    使用SOLID并保持代码干净。检查:

    如果您看到可能要实施的内容,请询问团队。请始终记住您对以前项目的了解,如果您知道ProjectX具有该功能,请从那里开始;)


    重用很重要,避免重复,特别是在同一产品/甚至子系统中。始终寻找它很重要,但不要让它妨碍项目的进展。

    我们的团队有许多有用的库,我们在整个开发过程中使用这些库。这些库以某种“开源”方法保存在公共存储库中。每个库(或多个库)由一个人负责管理,开发人员可以提交补丁

    然后,这些库被发布/构建到一个公共位置(我们部署到一个web服务器),在那里人们可以下载它们并在他们想要的任何项目中使用它们。到目前为止,它运作得相当不错。我们唯一需要注意的是,如果API发生变化,我们必须确保每个人都意识到这一点。我们通过版本号和图书馆维基上的信息来实现这一点


    编辑:此外,我们为我们的库(Javadoc、Crystal Report等)发布生成的文档,以便开发人员可以利用这些文档。

    还记录其预期用途以及不打算执行的操作。这一点很好。我们有一个小团队和一个小的可重用代码库。我们从事的项目类型非常相似,因此很容易找到有意义的命名方法并将其组织好,这有助于自我记录,但我们确实有额外的文档,当我们想要添加它们时,我们会开会讨论新项目。