Open source 复制粘贴与引用

Open source 复制粘贴与引用,open-source,reference,copy-paste,code-reuse,Open Source,Reference,Copy Paste,Code Reuse,我的问题是关于引用开源框架。它们中有许多用于许多不同的目的。我个人在一个项目中利用了其中的几个。例如: 统一 校准/棱镜 验证方面 企业图书馆测井 企业图书馆异常处理 企业图书馆缓存 卡利本 从开发工作的角度来看,所有这些框架都有很大的帮助。但也有一些消极方面: 吨DLL(上表中的15个) 应用程序级(非通用程序集和新程序集)必须引用许多核心DLL,这可能会造成混淆),并且涉及大量不同的名称空间 部署上述数吨DLL可能会出现问题(我有时使用ILMerge来缓解这一问题和上述问题,但现在我们暂且不

我的问题是关于引用开源框架。它们中有许多用于许多不同的目的。我个人在一个项目中利用了其中的几个。例如:

  • 统一
  • 校准/棱镜
  • 验证方面
  • 企业图书馆测井
  • 企业图书馆异常处理
  • 企业图书馆缓存
  • 卡利本
  • 从开发工作的角度来看,所有这些框架都有很大的帮助。但也有一些消极方面:

  • 吨DLL(上表中的15个)
  • 应用程序级(非通用程序集和新程序集)必须引用许多核心DLL,这可能会造成混淆),并且涉及大量不同的名称空间
  • 部署上述数吨DLL可能会出现问题(我有时使用ILMerge来缓解这一问题和上述问题,但现在我们暂且不谈)
  • 开源项目生命周期-开源项目来来往往,因此,如果其中任何一个项目不再积极维护,那么可能会担心是否存在需要修复或改进的内部缺陷
  • 混淆“如何做事”。我们并不积极利用上述框架的每一部分。事实上,这些框架中有几个重叠,并提供了冗余的组件和功能。就发展而言,这可能令人困惑。我们希望在整个代码库中实现一个简单易懂的一致性实现。在这方面,让多个区域以不同的方式做同一件事可能会很麻烦。这可能是我最大的担忧之一
  • 如果这些框架引用其他程序集的不同版本(即,一个内部引用Unity 1.1,另一个内部引用Unity 2.0),那么您就有大麻烦了
  • 替代方案?将源代码包含在项目的公共dll中(即MyProject.common)。让我们暂时把遵守许可证要求的问题放在一边

    这也有几个负面影响:

  • 利用框架提供商发布的更新并不容易——您需要更新源代码
  • 功能的封装——当源代码都掌握在你手中时,打破这种模式就更容易了
  • 所以,我知道人们可能对此有很多意见……我很想听听他们的意见


    谢谢。

    对于您的问题的某些方面,这可能是相关的:

    这个问题的另一个常见解决方案是在所需功能的基础上编写一个封装层,这至少可以在升级到支持库的新版本时保护您的代码不受随意更改的影响

    至于开源项目的生命周期,应该清楚哪些项目是健康的,哪些是不健康的。例如,作为Apache或Eclipse基础的一部分的项目可能是健康的,而sourceforge上的一些随机事件可能不是。通常,您可以通过避免看起来不活跃的项目来完全避免这个问题

    对于将代码复制到项目中的负面影响:

  • 我知道你想把执照放在一边,但事实上你不能。我不是律师,如果有问题,你应该为你的项目咨询一位律师,但如果你正在开发一个专有系统,它可能会意外成为GPL'ed
  • 它使您的开发环境更加混乱。您必须担心是否正确复制了compiles中的代码,是否使用了正确的版本进行编译,是否具有正确的构建脚本。您的IDE中还有所有这些额外的代码,它们会占用空间
  • 正如您所指出的,这使得更新代码非常困难
  • 如果您必须将bug归档到开源项目中,这将变得更加困难
  • 如果你不小心的话,一个对代码一无所知的初级开发人员可能会进入代码,开始胡乱处理代码

  • 可能有更多的理由不这样做,但这只是少数。希望这能有所帮助。

    您或任何人能否就不只是将开源框架的源代码合并到您自己的源代码中的原因发表更多评论?好的,添加了一些原因。祝你好运