引发我问题的是来自Dare Obasanjo的this post from Jeff Atwood和this post。在我看来,至少在某些领域,第三方功能比自定义代码更好。
例如,日志记录应该始终是第三方的吗?加密怎么样?或者搜索?
我期待着每个人对此的反馈。
编辑:此问题假设日志记录、加密和/或搜索不是您的核心业务。
发布于 2008-10-20 21:11:32
大多数情况下,加密应该是第三方的,...unless你是在销售加密系统。
这就是我所理解的Atwood先生的观点,你的核心业务不应该是第三方的,所以可能没有什么应该总是第三方的……
发布于 2008-10-20 21:10:57
我的经验法则是使用(或至少考虑)第三方来处理任何超出业务核心目的的事情。
加密一直是这方面的典型例子。但它也延伸到了其他领域。
在开发期间编写用于故障排除的日志记录代码与编写用于监视生产系统的日志记录代码完全不同。
这一切都是关于选择哪些开发领域真正为您的项目增加了价值。使用第三方工具可以消除该组件不完整/有but等风险,但同时也会带来风险,即它可能不像您需要的那样灵活。
另一个例子是为一个网站开发一个完整的网络论坛,当你可以用更便宜的价格购买一个解决方案时。
发布于 2008-10-20 21:26:41
“哪些功能应该始终是第三方的?”
没有。在讨论本质上的工程决策时,总是有例外或特殊情况来否决“总是”的惊人用法。
此外,转向第三方的决定几乎永远不应该基于给定的“功能”。没有这样一个完美的库,你永远不需要去其他任何地方来实现这种类型的功能。
选择第三方是应该基于以下因素做出的决定
使用第三方的成本vs.根据最后期限所需的时间(例如,它可能在内部更便宜,但您的开发时间表可能不允许集成、调试、维护和升级路径的regardless)
然而。有些事情真的很难相信呆在家里会更好。例如,您可以编写OpenGL和DirectX的竞争对手,在某些应用程序(科学计算等)中,有充分的理由考虑这样的路径。但一般来说,你不会想到它的。即使它是“免费的”,它仍然是第三方的依赖,你可能会因为一个只影响你如何使用这些图形语言的bug而陷入困境。
换句话说,存在一些令人难以置信的复杂或难以证明/测试的东西,这些东西几乎总是应该交给第三方。安全性是另一个问题。不要写你自己的散列算法,除非你1)确实疯了,2)至少有3个很好的商业理由这样做。
但是“什么功能应该始终是第三方的?”没有。总会有例外的。
-Adam
https://stackoverflow.com/questions/219915
复制相似问题