C# 通用和实用程序库整合

C# 通用和实用程序库整合,c#,architecture,shared-libraries,class-library,C#,Architecture,Shared Libraries,Class Library,在开始之前,我会问一些类似但不确切的问题: , 我最近开始使用我们公司的内部C#库,包括Common.dll和Utilities.dll;相当标准的东西 我目前的计划是将这两个库细化为两个非常独立的实体,它们具有非常独立的用途。然而,我还没有弄清楚该在哪里画这条线 我不想详细说明每一个都包含哪些内容,而是想得到一些中立的建议,告诉你如何定义这些障碍。我不需要细节 还有一种观点认为,这两个库应该合并为一个库。(见以上链接)如果没有合适的替代方案,我愿意接受这个想法。不过,我更感兴趣的是两者之间的

在开始之前,我会问一些类似但不确切的问题:

我最近开始使用我们公司的内部C#库,包括Common.dll和Utilities.dll;相当标准的东西

我目前的计划是将这两个库细化为两个非常独立的实体,它们具有非常独立的用途。然而,我还没有弄清楚该在哪里画这条线

我不想详细说明每一个都包含哪些内容,而是想得到一些中立的建议,告诉你如何定义这些障碍。我不需要细节

还有一种观点认为,这两个库应该合并为一个库。(见以上链接)如果没有合适的替代方案,我愿意接受这个想法。不过,我更感兴趣的是两者之间的区别

提前谢谢

你说话的口气好像“普通”和“实用”都有很好的含义。我不认为应该有这样的分离,或者如果有可重用代码的组织,那么应该有两个这样的类别

首先,我将区分倾向于在生产应用程序中重用的代码体和可能仅用于测试的代码体

然后,为了专注于生产应用程序,我希望会有业务领域的通用代码(例如,处理外汇、汽车租赁里程率或任何业务的代码)和更通用的实用程序,如日志、字符串格式或一些巧妙的数学)。我想你会发现一些代码在某种程度上“属于一起”,而有些代码你想分开保存。一些可能的标准:

  • 变化率:当这些变化发生时,可能也会发生变化,所以我们需要一起发布它们
  • 开销-这一块很大,只有需要的应用程序才应该为包含或部署它付出代价
  • 范围-这是UI代码,也就是数据库代码,请将它们分开保存
  • 依赖性——如果你用这个,那么你也用那个,所以把另一个分开,他不需要那个
  • 避免循环依赖,分解和重新组织以避免这些依赖
你说话的时候好像“普通”和“实用”都有很好的含义。我不认为应该有这样的分离,或者如果有可重用代码的组织,那么应该有两个这样的类别

首先,我将区分倾向于在生产应用程序中重用的代码体和可能仅用于测试的代码体

然后,为了专注于生产应用程序,我希望会有业务领域的通用代码(例如,处理外汇、汽车租赁里程率或任何业务的代码)和更通用的实用程序,如日志、字符串格式或一些巧妙的数学)。我想你会发现一些代码在某种程度上“属于一起”,而有些代码你想分开保存。一些可能的标准:

  • 变化率:当这些变化发生时,可能也会发生变化,所以我们需要一起发布它们
  • 开销-这一块很大,只有需要的应用程序才应该为包含或部署它付出代价
  • 范围-这是UI代码,也就是数据库代码,请将它们分开保存
  • 依赖性——如果你用这个,那么你也用那个,所以把另一个分开,他不需要那个
  • 避免循环依赖,分解和重新组织以避免这些依赖

我意识到,假设每个人都看到了这两者之间的区别是很尴尬的,但在我阅读本网站和其他网站时,这是相当普遍的。我想在非正式层面上,你可能是对的,尽管你的问题清楚地表明,似乎缺乏明确的分界线定义。我更喜欢将这个问题视为所有可重用代码的粒度问题。我不认为我们只是把代码一分为二,我认为通常更多。问题不是“这是普遍的还是实用的”而是“我们有正确的作品吗”我意识到假设每个人都看到了这两者之间的区别是很尴尬的,但是当我阅读这个和其他网站时,这是相当普遍的。我想在非正式的层面上,你可能是对的,虽然你的问题清楚地表明,似乎缺乏明确的分界线定义。我更喜欢将这个问题视为所有可重用代码的粒度问题。我不认为我们只是把代码一分为二,我认为通常更多。问题不是“这是普通的还是实用的”,而是“我们有合适的产品吗”