代码重用和重构

hor*_*ace 7 code-reuse refactoring

重用代码与复制/粘贴的最佳做法是什么?

重用的问题可能是更改重用代码会影响许多其他功能.

这是好的和坏的:好的,如果更改是错误修复或有用的增强.如果其他重用代码意外破坏,因为它依赖于旧版本(或新版本有错误),那就太糟糕了.

在某些情况下,复制/粘贴似乎更好 - 粘贴代码的每个用户都有一个私有副本,它可以自定义而不会产生任何后果.

这个问题是否有最佳实践; 重复使用是否需要水密单元测试?

S.L*_*ott 11

每行代码都有成本.

研究表明,成本与代码行数不成线性关系,它是指数级的.

复制/粘贴编程是重用软件的最昂贵方式.

"重复使用是否需要水密单元测试?"

没有.

所有代码都需要适当的单元测试 所有代码都是重用的候选者.

  • COCOMO看起来像我一样:努力= 2.5 Ksloc**1.05.那不是那么指数吗? (2认同)

Viz*_*izu 2

所以消费者(重用)代码依赖于重用的代码,这是正确的。

你必须管理这种依赖性

对于二进制重用(例如 dll)和代码重用(例如脚本库)也是如此。

  • 消费者应该依赖于重用代码/二进制文件的某个(已知)版本。

  • 消费者应该保留重用代码/二进制文件的副本,但永远不要直接修改它,只有在安全时才更新到较新的版本

  • 修改重复使用的代码库时请仔细考虑。用于破坏性变更的分支。

  • 如果消费者想要更新重用的代码/二进制文件,那么它首先必须测试它是否安全。如果测试失败,那么消费者总是可以回退到最后一个已知(并保留)的良好版本。

因此,您可以从重用中受益(例如,您必须在一个地方修复错误),并且您仍然可以控制更改。但是,每当您更新重用的代码/二进制文件时,没有什么可以阻止您进行测试。