我们使用什么技术来最大化代码重用?
时间:2020-03-06 14:50:39 来源:igfitidea点击:
几年前,有人告诉我有关代码重用的研究。显然,发现平均而言,程序员在搜索可重用的代码时有7分钟的时间。如果他们在该窗口中找不到适合自己需求的代码,他们将编写自己的代码。
这是在需要仔细管理代码以供重用的上下文中提出的,以确保我们可以在窗口中找到所需的内容。
我们(个人和组织)如何管理资源以使其更易于重用?
我们是否专门维护一个重用库?如果是这样,我们如何编制索引以最大程度地提高命中率?
解决方案
一个复杂的问题:
- 代码的某些部分可以概括为库或者API。我们有一个公共库,其中包含有关常见问题的解决方案的最新信息。通常是:验证,缓存,数据访问类,日志记录等。
- 有些部分是特定于应用程序的。它们不能轻易地泛化。我们将它们转换为HowTos并进行内部演示。还可以通过使用易于浏览的SCM(在我们的情况下为SVN)来回收代码。
- 我们还有一些工具可以生成一方面无法回收的代码,另一方面却总是相似的(想想调用存储过程)。
- 结对编程也是一种传播现有解决方案知识的有用方法。我们在可能或者适当的时候使用它。
- 最后一种技术是学费。每个编码器都有一个辅导员要参考。由于导师很少,因此他们之间有很多共享,并且可以自上而下的方式传播这些知识。
毫不留情地重构,并希望最好。
更新(4年后,希望更明智)
- 就像S.Lott的评论说:注意命名。将这个词传播给团队中的所有"提交者"。好的名字使事物可搜索,从而减少重复。
- 有一种做某事的方法,并使其可访问和可搜索。
- 为普通(L.C.D.)程序员编写代码。不要在简单就足够的地方聪明。 (包括设计模式的鞋拔强迫和相关疾病)
- 尽早采用一套通用的约定,样式,准则,标准等。确保买进,从而确保团队内部的合规性。 (这意味着每个人都使用制表符(或者空格)!)。选择什么都没关系-目标是代码看起来应该一致
- 有一个看门人(由团队尊敬),他注视着所有登机手续是否有红旗。
- 编写代码"测试优先" /"由外而内"。这通常可以确保代码可被多个客户端使用。 (请参阅GOOS关于上下文独立的项目符号)
如果我们尚未成为我的最初答复,请尝试使用TDD。
我认为TDD的使用是保持代码耦合低的好方法,还有其他好处。尽管从本质上讲这并不会阻止相同的行为执行两次,但是当我们确定可以删除重复项的区域时,这将大大简化工作。
TDD的另一个好处是,在该周期中,有一个步骤可以消除重复(重构)。
此外,测试是代码文档的一部分,从而使识别重复的行为变得更加容易。
- 有一个积极支持的框架。
- 知道现有的代码库/使其他开发人员知道代码库。如果小组/公司足够大,请有人知道代码库并可以寻求指导。
- 文件,文件,文件。未记录的代码对于重新使用是无用的,因为它花费了太长时间来理解其内部工作方式。
- 拥有良好的界面。简单的类型,简单的结构或者类。事物越复杂,将在另一个项目中使用的内容就越少。
- 优化和调试可重用代码。第n次遇到他人代码错误的开发人员将开始重新编写已经存在的代码。
组织是关键。如果名称空间和智能感知可用,则可以缩小并最终找到合适的功能。如果他们没有找到他们想要的东西,他们可能会找到接近或者相关的东西。只需将代码混为一小组即可轻松找到,但是人们永远不会足够快地找到他们想要的方法。
在命名和位置方面,一致性也是至关重要的。如果我们决定在项目过程中的某个时候更改样式,请返回并更改所有内容以适合该样式。这可能很漫长而无聊,但是比尝试使用不一致的库要好。