几年前,我们需要一个C ++ IPC库来通过TCP进行函数调用。我们选择了一个并在我们的应用中使用它。过了一会儿,很明显它没有提供我们需要的所有功能。在我们软件的下一个版本中,我们将第三方IPC库扔掉,并将其替换为我们自己编写的一个。从那时起,我有时会怀疑这是否是一个好的决定,因为它已被证明是相当多的工作,它显然感觉像reinventing the wheel。所以我的问题是:代码重用是否有缺点证明这种重新发明的合理性?
答案 0 :(得分:8)
我可以建议一些
错误被复制 - 如果您重复使用错误的代码:)
有时可能会增加额外开销。例如,如果您只需要做一件简单的事情,则不建议使用实现所需功能的复杂BIG库。
您可能会遇到一些许可问题。
您可能需要花一些时间来学习\配置外部库。如果重新开发的时间要短得多,这可能无效。
重复使用记录不良的图书馆可能会获得比预期/估计更多的时间
答案 1 :(得分:2)
P.S。编写我们自己的库的原因是:
答案 2 :(得分:2)
这几乎总是个案。您必须考虑您尝试重用的内容的适用性和质量。
答案 3 :(得分:2)
第一个问题是:如果代码是GOOD代码,则只能成功重用代码。如果它的设计很差,有漏洞,或者非常脆弱,那么你会遇到你已经遇到的相同问题 - 你必须自己去做,因为它很难修改现有的代码。
但是,如果您正在考虑使用的是第三方库,那么您没有源代码,那就有点不同了。如果它是那种库,你可以尝试获取源代码。一些商业图书馆供应商可以接受建议和功能请求。
答案 4 :(得分:1)
通过重用第三方库,最大的缺点(你自己提到)是你强烈耦合并依赖于该库如何工作以及它应该如何使用,除非你设法创建一个可以使用的中间接口层照顾它。
但是创建通用接口很困难,因为将现有库替换为现有库,或多或少要求新功能以类似的方式工作。但是,您始终可以使用它重写代码,但这可能非常困难,需要很长时间。
另一个方面是,如果您重新发明轮子,您可以完全控制正在发生的事情,您可以根据需要进行修改。如果您依赖于第三部分库并且不断为您提供更新和错误修复,那么这完全是不可能的。另一方面,以这种方式重用代码使您可以专注于软件中的其他事情,这有时可能是您要做的事情。
总是有一种权衡。
答案 5 :(得分:1)
金色智慧::它必须在可重复使用之前可用。
答案 6 :(得分:1)
如果您的代码依赖于外部资源并且那些代码消失了,那么您可能会削弱许多应用程序的部分内容。
答案 7 :(得分:1)
由于大多数重复使用的代码都来自互联网,因此您会遇到Bathroom Wall of Code Atwood谈论的所有问题。您可能会遇到不安全或不可靠的借用代码问题,而且黑盒子越多,就越糟糕。
答案 8 :(得分:1)
代码重用的缺点:
这取决于您要重用或重写的大小写,语言和代码。总的来说,我认为语言越高级,我越倾向于代码重用。高级语言中的错误可以产生更大的影响,并且它们更容易重写。高级代码必须保持可读性,整洁和灵活。当然,这可以说是所有代码,但是,不知何故,重写C库听起来不如重写(或者说重新分解)PHP模型代码那么好。
所以,无论如何,这些是我用来推广"重新发明轮子的一些论据"。
从长远来看,从头开始重写比从而解决当前代码库中的错误和限制更快,更有趣,更好。
答案 9 :(得分:0)
想知道您正在使用什么来保持这个库重新发明?
答案 10 :(得分:0)