Frameworks 公司的公共图书馆

Frameworks 公司的公共图书馆,frameworks,code-reuse,Frameworks,Code Reuse,我注意到,在我工作过的几乎每一家公司中,他们都有一个公共库,通常在许多项目中共享。通常情况下,这是一个单一的companyx commons项目,最终成为通用程序的垃圾场,包括: 命令行分析器 文件实用程序 框架助手 等等 其中一些是经过深思熟虑的,一些重复的功能可以在ApacheCommonsLang、CommonsIO等中找到 您的公共库中有哪些内容?更重要的是,您如何构建公共库,使其易于改进并与其他项目合并?到目前为止,我已经编写了我们办公室使用的大多数公共库 我们有一些按钮类,它们

我注意到,在我工作过的几乎每一家公司中,他们都有一个公共库,通常在许多项目中共享。通常情况下,这是一个单一的companyx commons项目,最终成为通用程序的垃圾场,包括:

  • 命令行分析器
  • 文件实用程序
  • 框架助手
  • 等等
其中一些是经过深思熟虑的,一些重复的功能可以在ApacheCommonsLang、CommonsIO等中找到


您的公共库中有哪些内容?更重要的是,您如何构建公共库,使其易于改进并与其他项目合并?

到目前为止,我已经编写了我们办公室使用的大多数公共库

  • 我们有一些按钮类,它们比标准按钮稍微有用一些
  • 一个数据库管理类,它执行一些内部缓存,可以连接到ODBC、OLEDB、SQL和Access数据库,甚至不需要翻转参数
  • 一些网格和列表控件是多线程的,因此我们可以向它们添加大量数据,而不必在每次列表框/组合框出现性能问题时都编写所有多线程代码
这些类使我们能够更容易地处理彼此的代码,并知道它们是如何工作的,因为我们在整个产品中都使用完全相同的接口


就组织而言,所有DLL及其源代码都存储在办公室的共享开发驱动器上,我们都可以访问该驱动器。(我们是一家相当小的商店)

到目前为止,我已经编写了我们办公室使用的大多数常用库

  • 我们有一些按钮类,它们比标准按钮稍微有用一些
  • 一个数据库管理类,它执行一些内部缓存,可以连接到ODBC、OLEDB、SQL和Access数据库,甚至不需要翻转参数
  • 一些网格和列表控件是多线程的,因此我们可以向它们添加大量数据,而不必在每次列表框/组合框出现性能问题时都编写所有多线程代码
这些类使我们能够更容易地处理彼此的代码,并知道它们是如何工作的,因为我们在整个产品中都使用完全相同的接口


就组织而言,所有DLL及其源代码都存储在办公室的共享开发驱动器上,我们都可以访问该驱动器。(我们是一家相当小的商店)

我们按功能划分我们的库

Commmon.Ui.dll具有Ui元素的基类。 Common.Data.Dll是企业库数据访问类的包装器。 普通。商业是其他普通类的垃圾场,而这些普通类则不适合


我们根据需要创建其他专门的DLL。

我们按函数划分库

Commmon.Ui.dll具有Ui元素的基类。 Common.Data.Dll是企业库数据访问类的包装器。 普通。商业是其他普通类的垃圾场,而这些普通类则不适合


我们会根据需要创建其他专门的DLL。

根据我的经验,普通库成功的最大因素是用户的购买;在这种情况下,用户是其他开发者;您的工作场所/团队文化将是一个重要因素

为不同的应用程序层提供独立的库(项目/程序集,如果您在.Net中)是必不可少的(例如:将UI和数据访问代码放在一起显然没有意义)

让事情尽可能简单;你没有放在公共库中的内容通常至少和你所做的一样重要。图书馆的用户不需要思考,所以使用起来需要非常简单

我们坚持的金科玉律是将单个功能集中在单个任务上——做一件事并把它做好(或做得非常好);不要试图提供一些试图考虑到各种可能性的东西,你认为你做的东西越是可重用,就越不可能被使用。《代码完成》(这本书)有一些关于公共库的优秀内容

设置/改进库的一个好方法是定期进行代码检查和回顾;找到你已经提出的好的候选人,并考虑将他们重新编成图书馆以备将来的项目;一个好的候选人将是一个以上的开发人员必须在一个以上的项目上做的事情(例如)


建立一种简单而清晰的图书馆治理机制——能够“拥有”特定图书馆并确保其整体质量的人(如高级开发人员或团队负责人)。

根据我的经验,普通图书馆成功的一个最大因素是用户购买;在这种情况下,用户是其他开发者;您的工作场所/团队文化将是一个重要因素

为不同的应用程序层提供独立的库(项目/程序集,如果您在.Net中)是必不可少的(例如:将UI和数据访问代码放在一起显然没有意义)

让事情尽可能简单;你没有放在公共库中的内容通常至少和你所做的一样重要。图书馆的用户不需要思考,所以使用起来需要非常简单

我们坚持的金科玉律是将单个功能集中在单个任务上——做一件事并把它做好(或做得非常好);不要试图提供一些试图考虑到各种可能性的东西,你认为你做的东西越是可重用,就越不可能被使用。《代码完成》(这本书)有一些关于公共库的优秀内容

设置/改进库的一个好方法是定期进行代码检查和修改