您选择框架或库的标准是什么?

时间:2009-01-28 16:33:21

标签: language-agnostic open-source frameworks

通常,您如何选择在您的应用程序中使用的框架或库?它必须是开源的吗?它必须是商业广告吗?它是否必须积极开发,有文档记录,或者有一个漂亮的主页?如果您的语言本身支持某些功能,那么您选择第三方框架或库会是什么?

您的标准是什么?

14 个答案:

答案 0 :(得分:10)

  1. 必须工作。
  2. 必须是可行的 - 商业支持,积极开发或完整,除了端口之外不需要更新。
  3. 它必须有合理的支持 - 示例,完整源代码,开发人员论坛,反馈/错误报告。
  4. 必须稳定。

答案 1 :(得分:2)

如果有一个开源选项可行,我会一直选择,没有更好的支持,然后有源代码,并能够进行更改,以满足您的需求。 如果没有api文档,我不会浪费时间。

修改:@ Josh Brown评论

是的,我实际上必须对我使用的开源库进行更改。我在项目的第一个版本中使用了库,然后对下一个版本的要求要求我添加新功能。自己修改库更容易,找到支持新功能的新功能,然后修改我的代码以使用新库。

答案 2 :(得分:1)

稳定是最重要的。如果你做了你需要做的事情,如果你能搞清楚,那么唯一剩下的就是它是否稳定。

如果它有一个清晰的界面文档并不那么重要 - 如果它有一个糟糕的界面文档更重要。如果这是一个庞大的项目,可以用它做很多事情,并且你的预期用途可能会在未来发生变化(例如TineMCE),那么就需要一个积极的支持论坛。

Opensource确实有帮助但不是必需的。如果它不是开源的,则需要一个演示,以便您可以在购买之前编写所需的所有代码以便与它进行交互。

到目前为止,我见过的库中最酷的liscence方案是Js-Ext。如果你的申请是开源的,它是开源的;但如果你想通过你的项目赚钱,你需要许可证。

答案 3 :(得分:1)

对于C / C ++,非工具开发:

  • 我可以配置它如何分配内存吗?
  • 我可以控制它执行I / O的方式吗?
  • 我可以控制其并发性吗?

对于工具开发:   - 这段代码让我觉得自己像个坏人吗?

答案 4 :(得分:1)

所需标准:

  • 必须符合项目要求,而不是相反(避免“当你有锤子时,每个问题看起来都像钉子一样”)
  • 无需kludges或黑客工作
  • 稳定性

重要,但可能不是交易破坏者:

  • 良好的文档(就Java而言,这至少意味着API上的一整套Javadoc)
  • 活跃的用户社区
  • 一致,可预测的习语
  • 未来版本中的兼容性

可选,很高兴:

  • 开源
  • 可用的教程和示例
  • 针对性能进行了优化

答案 5 :(得分:0)

无论哪个对你正在进行的项目最有意义。没有严格的规则。这就像决定使用哪种语言编写的。

答案 6 :(得分:0)

  1. 简单易学的设计
  2. 定制
  3. 如果它不是免费的,它应该是一个非常合理的价格,没有特许权使用费来分发或整合
  4. 大型社区

答案 7 :(得分:0)

我会选择一个基于以下内容的框架:

  • 它应该是开源的(在大多数情况下,这将确保它的质量)

  • 它的文档应该存在,更新并且易于访问

  • 它应该有一个良好的学习曲线

  • 使用

  • 应该很有趣

答案 8 :(得分:0)

  • 它必须没有运行时许可证费用:我的雇主(ISV)可以支付每个开发人员的许可证,但通常不是每个客户或每个最终用户许可证。

  • 我必须能够支持它(这意味着我有源代码):如果供应商破产,不会修复错误,或者不会添加我们想要的新功能下一个版本。

答案 9 :(得分:0)

  1. 记录良好
  2. 合理直观的API(如果ConvertToInt()存在,ConvertToDouble()也应该存在!)
  3. 一致的约定(请参阅PHP,了解如何不执行此操作!)
  4. 示例代码(编译和运行!)
  5. 源代码(因此您可以修复错误,学习等)
  6. 稳定
  7. 关于何时购买新组件而不是使用您拥有的组件

    1. 该组件具有比本机组件更多的功能/特性(例如.NET数据网格在许多领域都需要分组)
    2. 执行组件所做的工作需要花费太长时间,或者您不知道如何(例如安全/加密组件)

答案 10 :(得分:0)

  1. 稳定的API
  2. 兼容许可
  3. 很好地适应您的技术堆栈
  4. 许多用户(依赖它的应用程序),积极开发/维护
  5. 开源更好(如果它的许可证适合你)
  6. 渴望使用它的开发人员:)
  7. 表现和功能

答案 11 :(得分:0)

按重要性排序:

  1. 易于理解和/或记录良好(教程是最好的)。
  2. 我可以在工作和家里使用它(所以开源是有帮助的,但不是copyleft)
  3. 最近有活动。
  4. 很稳定。对它的一些指示是版本> = 1.0。
  5. 该项目试图保持与早期版本的兼容性。没有什么比为新功能获得新版本的框架更令人讨厌了,这个版本对您的应用程序来说非常方便 - 然后认识到您的应用程序不再适用于框架。
  6. 符合这些条件的一些项目:

答案 12 :(得分:0)

我想要的东西:

  • 有效(你真的不能过分强调这一点)
  • 编写得很好(可能需要OSS,所以我可以看一下)
  • 维护得很好 - 我希望定期看到更新
  • 有一个干净的界面
  • 如果它破裂我可以解决(再次,OSS是一场胜利)
  • 不会将我锁定为单一供应商

答案 13 :(得分:0)

我喜欢上面的tvanfosson答案。

文档不好或看起来不好的主页是关闭的,但不会像快速的错误代码或糟糕的API那样把我推开。

至于使用语言已经支持的第三方库,我使用jodatime库而不是Java的内置日期处理(我认为大多数人都同意sux。)我很高兴听到他们正在重做日期处理更多就像Joda的实施一样。