简体   繁体   English

我是否更愿意购买商业框架或创建我自己的相同功能版本? (经典“创造与购买”)

[英]Should I prefer purchasing a commercial framework or creating my own version of the same functionality? (classic “Create vs Buy”)

I have mixed views about commercial class libraries. 我对商业类库有不同的看法。 Am I better off using a commercial class library or starting from scratch? 我最好使用商业类库还是从头开始? If buying a library is the way forward which one for a C# developer? 如果购买图书馆是C#开发人员的前进方向?

Put a value on your time, say $30 an hour. 把价值放在你的时间上,比如每小时30美元。 Estimate how long it would take you to write the library, then add two times that for debugging and testing. 估计编写库需要多长时间,然后再添加两次用于调试和测试。 Subtract the time it's going to take you to learn how to use the commercial library with the given documentation. 减去学习如何使用给定文档的商业库的时间。 Multiply by your hourly rate. 乘以您的小时费率。 Compare. 相比。

Writing a library can be fun and rewarding, but "not invented here" syndrome keeps a lot of companies from creating anything useful, as they're stuck reinventing the wheel for additional cost. 写一个图书馆既有趣又有益,但“这里没有发明”的综合症让许多公司无法创造任何有用的东西,因为他们不得不重新发明轮子以获得额外的成本。 Make sure it is extensible (if you don't get access to the source) and has what you need. 确保它是可扩展的(如果您无法访问源)并拥有您需要的内容。 Buy it. 买吧。

As a personal project, it's probably worth writing it from scratch at least once to see what you can learn, but on company dime you need to be productive and efficient. 作为一个个人项目,可能至少要从头开始写一次,看看你能学到什么,但是在公司角度你需要高效率。

Or write it from scratch and release it open source ;) 或者从头开始编写并发布它的开源;)

I really think you are missing out the most important strategy: 我真的认为你错过了最重要的策略:

  • Use open source and contribute changes back to the community. 使用开源并将更改贡献回社区。

I have seen lots of commercial software integrations go bad, usually because of real-life demands that are not met by the commercial product, many of which you do not discover until you are deeply committed (oh, so you wanted search to NOT have an upper limit of 1000 responses? No, we can't do that...) 我看到许多商业软件集成都很糟糕,通常是因为商业产品无法满足现实生活中的需求,其中很多都是在你深深投入之后才发现的(哦,所以你想要搜索没有1000响应的上限?不,我们不能这样做...)

If these things happen to you with open source, you at least always have the option of forking. 如果使用开源这些事情发生在你身上,你至少总是可以选择分叉。

Always use a good quality library wherever possible - but only if you can have the source code. 始终尽可能使用高质量的库 - 但前提是您可以拥有源代码。 Experience tells me to not use anything that I can't have the source for. 经验告诉我不要使用任何我无法获得的资源。

Also - depending on what the library is, it is sometimes sensible to have a layer on top of it so you reduce dependencies, thus making any future replacement of a library easier. 另外 - 根据库的含义,有时候在它上面放置一个图层是合理的,这样可以减少依赖性,从而使将来更换库变得更容易。

That depends on your goals. 这取决于你的目标。 If you want to experiment and learn about a certain framework feature it makes sense to try to implement it. 如果您想尝试并了解某个框架功能,那么尝试实现它是有意义的。

However, if you're trying to make money (or fame or whatever) on your software, you should ask yourself how to best spend your time. 但是,如果你想在你的软件上赚钱(或成名或其他),你应该问问自己如何最好地花时间。 How much value do you add to the application by implementing yet another Linked List? 通过实现另一个链接列表,您为应用程序添加了多少价值? Probably not a lot, so use whatever good implementations available. 可能不是很多,所以使用任何可用的良好实现。 On the other hand, you could add value to your application by implementing a very specific graph control (although there are plenty on the market). 另一方面,您可以通过实现非常特定的图形控件来增加应用程序的价值(尽管市场上有很多)。 So look at it from a return on investment point of view. 所以从投资回报的角度来看待它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 创建自己的双击功能 - Creating My Own Double-Click Functionality 在VS 2010发布之前我应该​​等待购买Resharper吗? - Should I wait to buy Resharper until VS 2010 is released? 我应该如何创建自己的“ now” / DateTime.Now? - how should i create my own 'now' / DateTime.Now? 我应该在框架更新到新版本时重新发布我的项目吗? - Should I republish my project while the framework update to a new version? 我是否应该出于其他原因重用Microsoft.NET属性,还是应该创建自己的属性? - Should I reuse Microsoft.NET attributes for other reasons or should I create my own attributes? WPF:为什么我应该使用现有的MVVM框架而不是编写自己的框架? - WPF: Why should I use an existing MVVM framework instead of writing my own? 调试.NET / WP7应用程序-我应该编写自己的框架吗? - Debugging .NET / WP7 applications - should I write my own framework? 响应式UI 6:如何在版本6中实现与版本4相同的功能 - Reactive UI 6: How can I achieve same functionality of version 4 in version 6 以编程方式检查.NET Framework版本-我应该吗? - Programatically check for version .NET Framework - Should I? 我应该使用类库来定位.NET Framework和C#版本? - What .NET Framework and C# version should I target with my class library?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM