【问题标题】:What to include in a Utility Library [closed]实用程序库中包含的内容[关闭]
【发布时间】:2010-09-29 07:04:37
【问题描述】:

随着我的项目越来越多,我发现我经常从一个项目到另一个项目,从一个客户到另一个客户重复许多常见的任务。所以我开始组装一个“实用程序”库,一个项目之间经常重复的这些常见元素的集合。

到目前为止,我拥有调整图像大小、将数据网格导出到 Excel、发送电子邮件和替换标记化消息的实用程序。

如果您正在构建/使用 .NET 实用程序类库,您认为哪些类型的进程会有所帮助?您会设想哪些命名空间/组?

更新

我说的是一个实际的类库,它被分成命名空间来分组公共元素。

【问题讨论】:

    标签: .net code-reuse utilities common-tasks


    【解决方案1】:
    1. 我不会编写一个名为“Common”或“Utilities”或“Misc”的库,或者......你明白了。相反,我有一个名为“Lib”的目录,并将每个功能区域放在一个单独的库中。例如,对于 C++ 项目,我可能有 Lib/Trace、Lib/UI、Lib/Net、Lib/Web。对于 C#,我有 Lib/Acme.Trace、Lib/Acme.Windows.Forms、Lib/Acme.Net 等(假设您的顶级命名空间/公司称为“Acme”)。
    2. 雅格尼。不要编写您可能需要的代码。
    3. 在您在两个或更多项目中使用它们之前,请勿将它们放入共享库中。

    【讨论】:

    • 我非常同意第 3 点。
    • 我最近在某处读到,它必须使用一次才能重复使用,然后再重复使用两次(总共 3 次)。
    • 罗杰,非常好的观点。你会建议什么命名。到目前为止,在我所包含的项目中,它们已在 10-20 个项目中重复使用。
    【解决方案2】:

    就我个人而言,我会将其中一些功能放入单独的库中,因为“实用程序”是一个相当主观的术语,一个人认为有用的东西对其他人没有多大帮助。

    如果在库中将其分解为描述性命名空间,那么我会说这是更好(例如,调整大小的图像将位于某种 .Drawing 命名空间或 .Drawing.dll 中) .

    【讨论】:

    • 糟糕,我在帖子中遗漏了一些重要的内容,我说的是图书馆而不是课程。我已将项目分成不同的命名空间/类,以便将类似的项目组合在一起。
    【解决方案3】:

    我的类库中有很多东西可以在项目之间共享:

    • IoC 容器和依赖注入框架
    • 一个完整的控制器/观察者框架,允许我将 UI 代码与 backlogic 代码分开
    • 一组合理的、独立于数据库的用于执行 SQL 的类,负责处理一些语法差异,主要是函数名称
    • 许多其他帮助类和处理数据的实用方法
    • 一些标准化的内部存储类,如Tuple<..> 等。
    • 一些自定义集合,如Set<T>Heap<T>,以及处理各种类型集合的大量实用方法

    当我需要更多东西时,会添加类库。

    【讨论】:

      【解决方案4】:

      我建议不要使用“实用程序”库,而是创建特定于域(图形、身份验证、验证等)的库,并且只在需要的地方包含它们。关键当然是决定具体到什么程度。更多的特异性通常更好。

      不管它是否没有域,那么您可能并不完全理解它,这意味着您应该重新评估您正在做的事情并首先尝试完成。

      另外,请记住,在一两个项目中有用的东西最终可能只在一两个项目中有用。添加不必要的类只会导致后续的维护问题。

      【讨论】:

        【解决方案5】:

        虽然我自己只是一个初出茅庐的开发人员,但我发现 RegEx 函数和 SQL 过滤器非常有用。我还有 MSSQL 的合并复制功能,到目前为止对我来说非常方便。

        【讨论】:

          猜你喜欢
          • 2015-07-15
          • 1970-01-01
          • 1970-01-01
          • 2015-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-24
          • 2023-03-18
          相关资源
          最近更新 更多