2009-02-07 45 views
5

我总是发现一件令人沮丧的事情是,当我使用的图书馆不再维护时。即使事先查看更新历史记录和社区,我也遇到了稍后检查发现我使用的版本是最新版本的情况。当您使用的图书馆不再维护时,您会做什么?

一般而言,直到几个月过去了,或者发现了一些错误/限制之后,这种情况才被忽视。在Python编码时,我经常遇到这种情况,因为我希望升级到新版本的解释器,可以很容易地引入之前工作正常的库中的问题。我的问题是:对这种情况最好的回应是什么?

  • 你成为旧图书馆的维护者吗?即使你只是在修复你关心的错误,这仍然是一个很大的工作。特别是如果库很大,很复杂,并且没有足够的文档记录(这种情况通常比较少)。

  • 您是否切换到不同的库(如果有)?这也是一项重要的任务,可能会引入新的错误,特别是如果唯一的替代方案从另一个角度解决问题。即使您有先见之明地为旧库的功能编写抽象层,情况也是如此。

  • 你自己玩吗?它可能会比旧库更少的代码,因为你只写了你关心的部分。因此在未来更容易维护。但是现在你已经浪费了几天/几周/几个月的时间来生产可能功能较差的东西,并且保证会引入大量的新bug。

我知道,答案取决于具体情况:该库的大小,来源是否可用,它是如何维护的,你的代码量有多大用途,你的代码是如何深深依赖于它,等我正在寻找各种案件的答案。你对这个问题有什么经验?

回答

10

嗯,你已经找到了一个说法,以减少外部依赖的数...

我遇到这几种Java项目我已经审计;似乎人们倾向于放弃在Web上某处找到的Jar,以便从中获得尽可能少的重复使用。结果是一堆混乱的依赖,最终破坏了代码库。我更喜欢少用外部元件。

这可能是最有用的问你可以做什么之前。在开始使用它之前着重评估外部组件的未来生命周期。对开发者社区和用户社区的规模做一些研究。此外,更喜欢使用一个有一个或两个“较少”替代品的组件,您也可以使用它。

如果有些东西是你想要使用的,但它只有一两个人在工作,并且在自己的项目之外使用得并不多,那么你应该推出你自己的 - 或者与维护者联合起来的组件。

1

当我的雇主选择的Java EE框架陷入困境时,我们走出去找到了一个更新,更好的框架。幸运的是,Spring可用。

1

如果源代码可用,许可证已打开并且库很好地执行了这项工作,则可以选择分叉库。通过这样做,您也可以为其添加新功能。如果图书馆有很多事情需要解决,而且代码乱七八糟,那么最好还是找一些其他方法来处理。

2

我认为你的真正答案是你如何选择第三方库包含在你的代码中。

如果你碰巧喜欢不断的代码升级到语言的最新版本,那么在默认情况下,你只能使用有其背后活跃的社区图书馆

其实我会去远的话说,只有您希望使用第三方开源库的时间是当它背后的社区很大(比如说至少有40多个用户)并且它已经经历了几次发布时。

对于商业图书馆来说,同样的事情适用于公司需要多长时间以及有多少其他客户使用它。

如果你在这个位置找不到图书馆,那么确保你将第三方图书馆从你的代码中抽象出来,这样在未来更换并不困难。

1

我们宁愿因为这个原因推出自己的产品。我们最终完全控制它,完全知道它是如何工作的,我们可以以任何我们想要的方式改变它。当我们的屁股上场时,我们更喜欢降低风险,并自己动手。

我们曾经有一种情况曾使用过外部库,并被作者改写和重新利用,而不再做我们所期望的。我们翻了一遍,写了我们自己的版本,然后安全地继续。

底线是安全,风险最小化。

相关问题