几年前,我们需要一个 C++ IPC 库来通过 TCP 进行函数调用。我们选择了一个并将其用于我们的应用程序中。一段时间后,我们发现它并没有提供我们需要的所有功能。在我们软件的下一个版本中, 我们扔掉了第三方IPC库并用我们自己编写的库替换了它. 。从那时起,我有时会怀疑这是否是一个好的决定,因为事实证明这需要相当多的工作,而且显然感觉像是 重新发明轮子. 。所以我的问题是:代码重用是否有缺点可以证明这种重新发明的合理性?

有帮助吗?

解决方案

最大的缺点通过重用第三方库(你自己动手提),是你强耦合和依赖如何该库的工作原理以及它如何应该被使用,除非你成功地创建一个中间界面层,可以照顾它。

但很难创建一个通用的接口,因为用另一个替换现有的库,或多或少需要新的功能以类似的方式工作。但是,您可以使用它总是重写代码,但可能是非常艰苦,需要很长的时间。

另一个方面是,如果推倒重来,你有过发生了什么,当你觉得合适,你可以做修改的完全控制。如果你是依赖于第三方库活着,不断为您提供更新和bug修复这可能是完全不可能的。在另一方面,代码重用这种方式使您能够专注于其他事情在你的软件,有时可能是做的事。

总有一个权衡。

其他提示

我可以推荐几个

  1. 错误会被复制 - 如果您重复使用有错误的代码:)

  2. 有时它可能会增加额外的开销。举个例子,如果您只需要做一件简单的事情,那么不建议使用复杂的 BIG 库来实现所需的功能。

  3. 您可能会面临一些许可问题。

  4. 您可能需要花一些时间来学习\配置外部库。如果重新开发所需的时间要少得多,这可能不会有效。

  5. 重用文档不完善的库可能会花费比预期/估计更多的时间

附:编写我们自己的库的原因是:

  • 评估外部库通常非常困难并且需要花费大量时间。此外,有些问题只有在彻底评估后才会显现出来。
  • 它使得引入一些特定于我们项目的功能成为可能。
  • 由于您彻底了解该库,因此维护和编写扩展会更容易。

这几乎总是由个案。你要看看你想重用什么的适宜性和质量。

的头号问题是:你只能成功重用代码,如果该代码是好的代码。如果是设计不合理,有缺陷,或者是很脆弱的,那么你会遇到你已经没遇到同样的问题 - 你必须要自己做吧,因为它是如此难以修改现有的代码

但是,如果它是一个第三方的的,你使用的是你没有的源代码考虑,这是一个有点不同。你可以尝试,并获得源代码,如果是那样的库。一些商业库供应商是开放的建议和功能要求。

金智::它必须是可用的,才可以被重用。

如果您的代码依赖于外部资源,而那些走,你可能是很多应用瘫痪部分。

由于大多数重复使用代码来自互联网,你碰到的所有与问题代码的浴室墙了解阿特伍德的会谈。您可以运行与不安全或不可靠的借款代码问题,而且越黑盒装的是,越差。

代码重用的缺点:

  • 调试需要更长的时间,因为它不是您的代码,而且很可能是有些臃肿的代码。
  • 任何特定的要求也将需要更多的工作,因为您受到重复使用的代码的限制,并且必须解决它的限制。
  • 持续的代码重用将导致长期运行的应用程序臃肿且杂乱无章,并且难以追踪错误 - 编程地狱。
  • 重用代码可以(取决于具体情况)减少程序员的挑战和满意度,并且还会浪费开发新技能的机会。

这取决于您想要重用或重写的情况、语言和代码。总的来说,我认为语言的级别越高,我就越倾向于代码重用。高级语言中的错误可能会产生更大的影响,并且更容易重写。高级代码必须保持可读、整洁和灵活。当然,所有代码都可以这样说,但是,不知何故,重写 C 库听起来不如重写(或者更确切地说重构)PHP 模型代码是个好主意。

不管怎样,这些是我用来促进“重新发明轮子”的一些论点。

有时,从长远来看,从头开始重写比解决当前代码库的错误和限制更快、更有趣、更好。

想知道您正在使用,以保持这个库,你改造什么?

  1. 创建可重用代码的初始时间成本更高
  2. 当 master 分支有更新时,您需要同步它并再次部署
  3. 错误会被复制 - 如果您重复使用有错误的代码
  4. 重用文档不完善的代码可能会花费比预期/估计更多的时间
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top