公司的通用图书馆

时间:2009-11-20 22:28:45

标签: frameworks code-reuse

我几乎注意到我所工作的每家公司都有一个共同的库,通常在许多项目中共享。通常情况下,这是一个单一的 companyx-commons 项目,最终成为共同计划的倾销场所,包括:

  • 命令行解析器
  • 文件工具
  • Framework Helpers
  • 等...

其中一些经过深思熟虑,并且在Apache commons-lang,commons-io等中找到了一些重复的功能。

您的公共图书馆有哪些内容,更重要的是,您如何构建公共图书馆以使其易于改进并融入其他项目?

3 个答案:

答案 0 :(得分:3)

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

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

让事情变得尽可能简单;你没有把它放在一个公共图书馆里,通常至少和你做的一样重要。图书馆的用户不需要思考,因此使用起来非常容易。

我们坚持的黄金法则是将个人职能集中在一项任务上 - 做一件事,做得好(或非常好);不要试图提供一些试图将每种可能性考虑在内的东西,你认为自己制造它的可重用性越高 - 使用它的可能性就越小。 Code Complete(书中)有一些关于通用库的优秀内容。

设置/改进图书馆的一个好方法是定期进行代码审查和回顾;找到你已经提出的好候选人,并考虑将它们重新分解为未来项目的图书馆;一个好的候选人将是不止一个开发人员必须做的事情(例如)。

建立某种简单而清晰的图书馆治理 - 能够'拥有'特定图书馆并确保其具有高质量的人(例如高级开发人员或团队领导)。

答案 1 :(得分:1)

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

  • 我们有一些比标准按钮
  • 对我们有用的按钮类
  • 一个数据库管理类,它可以执行一些内部缓存,甚至可以连接到ODBC,OLEDB,SQL和Access数据库,而无需翻转参数
  • 一些多线程的网格和列表控件,因此我们可以在不降低程序速度的情况下向它们添加大量数据,并且每次出现列表框/组合框的性能问题时都不必编写所有多线程代码。

这些类使我们所有人都可以更轻松地处理彼此的代码并了解它们的工作原理,因为我们在整个产品中都使用完全相同的接口。

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

答案 2 :(得分:1)

我们按功能拆分库。

Commmon.Ui.dll具有ui元素的基类。 Common.Data.Dll是企业库数据访问类的包装。 Common.Business是其他常见类的倾销场,不适合其中一类。

我们根据需要创建其他专业dll。