什么是更好的:自己动手或使用可用的包装?

时间:2011-11-04 20:56:12

标签: ruby-on-rails ruby

在开发新的Rails应用程序时,最好是构建自己的解决方案还是使用第三方开源软件包?

例如,我可以使用Devise来实现我的应用程序的身份验证,但我也可以自己做,因为它并不是那么复杂。我可以使用RMagick,但如果我需要做的就是调整一些图像的大小,我可以自己与ImageMagick集成。

使用可用的第三方软件包的好处是简单快速的开发。但是,滚动我自己的解决方案的好处是可以更全面地了解我的应用程序中发生了什么,并且我最终得到了一个最适合我的应用程序的解决方案,而不是必须弯曲我的应用程序来使用该软件包。

另外,我担心在使用一堆第三方软件包时,升级可能会变得困难。如果他们不同步更新自己,我可能会遇到版本不兼容和其他问题。

显然,我提到的包装很受欢迎并且被广泛使用。我对版本兼容性的担忧是否没有根据?

感谢。

3 个答案:

答案 0 :(得分:1)

这个问题非常主观,但总的来说我会选择广泛使用的宝石。我个人赞成那些不那么黑魔法的人,因为像你一样,我想了解发生了什么,没有什么比调试第三方代码库更烦人了。例如,我传递Devise并使用AuthLogic,因为后者完成了繁重的工作,但让我按照我的选择与我的应用程序集成。

答案 1 :(得分:0)

这是一个非常主观的问题,并推广到所有语言。

我认为你应该尽可能使用可用的软件包,理由是它应该已经进行了大量的测试,并且修复了bug,并且如果你做了你的话,他们遇到的陷阱就必须找到你自己自己的。

那说你有一些非常重要的考虑因素:

  • 许可证 - 这与您的产品,服务或组织兼容吗?你需要付钱,你会处理copyleft材料吗?
  • 脉冲 - 除非你有足够的时间让它恢复生命,否则不要加入死亡项目。
  • 社区 - 了解社区的活跃程度,是否有邮件列表,人们在堆栈交换中谈论它吗?
  • 文档 - 应该有用户文档以及非常容易访问的示例。
  • 测试 - 使用计算机尝试下载并安装该程序,运行程序包附带的任何测试,看它是否真的有效。没有对源库的测试对我来说是一个很大的破坏。
  • 玩它 - 做一些简单的例子 - 使用任何教程和例子,衡量它的使用难度。

一个好的系统应该提供一定程度的抽象,让你远离血腥细节直到你想知道。我知道python的urllib工作的基本原则 - 但主要是,我不是在查看源代码,我只是使用它。

答案 2 :(得分:0)

他们并非毫无根据,但他们受到辩论,而且没有“正确”的答案。

重新发明轮子既费时又容易出错;成千上万的眼睛好于少数。在某些情况下,您自己的车轮可能比通用车轮更适合您的需求。

OTOH,你的车轮可能没有想到你以后需要的所有东西,而后期的重新架构可能与模塑预先打包的解决方案一样有问题。