我们使用什么技术来最大化代码重用?

时间:2020-03-06 14:50:39  来源:igfitidea点击:

几年前,有人告诉我有关代码重用的研究。显然,发现平均而言,程序员在搜索可重用的代码时有7分钟的时间。如果他们在该窗口中找不到适合自己需求的代码,他们将编写自己的代码。

这是在需要仔细管理代码以供重用的上下文中提出的,以确保我们可以在窗口中找到所需的内容。

我们(个人和组织)如何管理资源以使其更易于重用?
我们是否专门维护一个重用库?如果是这样,我们如何编制索引以最大程度地提高命中率?

解决方案

一个复杂的问题:

  • 代码的某些部分可以概括为库或者API。我们有一个公共库,其中包含有关常见问题的解决方案的最新信息。通常是:验证,缓存,数据访问类,日志记录等。
  • 有些部分是特定于应用程序的。它们不能轻易地泛化。我们将它们转换为HowTos并进行内部演示。还可以通过使用易于浏览的SCM(在我们的情况下为SVN)来回收代码。
  • 我们还有一些工具可以生成一方面无法回收的代码,另一方面却总是相似的(想想调用存储过程)。
  • 结对编程也是一种传播现有解决方案知识的有用方法。我们在可能或者适当的时候使用它。
  • 最后一种技术是学费。每个编码器都有一个辅导员要参考。由于导师很少,因此他们之间有很多共享,并且可以自上而下的方式传播这些知识。

毫不留情地重构,并希望最好。

更新(4年后,希望更明智)

  • 就像S.Lott的评论说:注意命名。将这个词传播给团队中的所有"提交者"。好的名字使事物可搜索,从而减少重复。
  • 有一种做某事的方法,并使其可访问和可搜索。
  • 为普通(L.C.D.)程序员编写代码。不要在简单就足够的地方聪明。 (包括设计模式的鞋拔强迫和相关疾病)
  • 尽早采用一套通用的约定,样式,准则,标准等。确保买进,从而确保团队内部的合规性。 (这意味着每个人都使用制表符(或者空格)!)。选择什么都没关系-目标是代码看起来应该一致
  • 有一个看门人(由团队尊敬),他注视着所有登机手续是否有红旗。
  • 编写代码"测试优先" /"由外而内"。这通常可以确保代码可被多个客户端使用。 (请参阅GOOS关于上下文独立的项目符号)

如果我们尚未成为我的最初答复,请尝试使用TDD。

我认为TDD的使用是保持代码耦合低的好方法,还有其他好处。尽管从本质上讲这并不会阻止相同的行为执行两次,但是当我们确定可以删除重复项的区域时,这将大大简化工作。

TDD的另一个好处是,在该周期中,有一个步骤可以消除重复(重构)。

此外,测试是代码文档的一部分,从而使识别重复的行为变得更加容易。

  • 有一个积极支持的框架。
  • 知道现有的代码库/使其他开发人员知道代码库。如果小组/公司足够大,请有人知道代码库并可以寻求指导。
  • 文件,文件,文件。未记录的代码对于重新使用是无用的,因为它花费了太长时间来理解其内部工作方式。
  • 拥有良好的界面。简单的类型,简单的结构或者类。事物越复杂,将在另一个项目中使用的内容就越少。
  • 优化和调试可重用代码。第n次遇到他人代码错误的开发人员将开始重新编写已经存在的代码。

组织是关键。如果名称空间和智能感知可用,则可以缩小并最终找到合适的功能。如果他们没有找到他们想要的东西,他们可能会找到接近或者相关的东西。只需将代码混为一小组即可轻松找到,但是人们永远不会足够快地找到他们想要的方法。

在命名和位置方面,一致性也是至关重要的。如果我们决定在项目过程中的某个时候更改样式,请返回并更改所有内容以适合该样式。这可能很漫长而无聊,但是比尝试使用不一致的库要好。