我注意到在我工作过的几乎每家公司中,他们都有一个通用库,通常在多个项目中共享。这通常是一个单一的companyx-commons项目,最终成为常见程序的垃圾场,包括:
- 命令行解析器
- 文件实用程序
- 框架助手
- ETC...
其中一些是经过深思熟虑的,并且在 Apache commons-lang、commons-io 等中发现了一些重复的功能。
您的公共库中有哪些内容?更重要的是,您如何构建公共库以使其易于改进和整合到其他项目中?
我注意到在我工作过的几乎每家公司中,他们都有一个通用库,通常在多个项目中共享。这通常是一个单一的companyx-commons项目,最终成为常见程序的垃圾场,包括:
其中一些是经过深思熟虑的,并且在 Apache commons-lang、commons-io 等中发现了一些重复的功能。
您的公共库中有哪些内容?更重要的是,您如何构建公共库以使其易于改进和整合到其他项目中?
根据我的经验,公共图书馆成功的最大因素是用户的支持。在这种情况下,用户是其他开发人员;您的工作场所/团队的文化和文化将是一个重要因素。
不同应用程序层的单独库(如果您在.Net 中,则为项目/程序集)是必不可少的(例如:将 UI 和数据访问代码放在一起显然没有意义)。
让事情尽可能简单;您没有放入公共库中的内容通常至少与您所做的一样重要。图书馆的用户不需要思考,所以使用起来需要超级简单。
我们坚持的黄金法则是让各个职能部门专注于一项任务——做一件事并把它做好(或非常非常好);不要试图提供试图考虑每一种可能性的东西,你认为你做的东西越可重用——它被使用的可能性就越小。Code Complete(本书)有一些关于常用库的优秀内容。
设置/改进库的一个好方法是定期进行代码审查和回顾;找到您已经提出的优秀候选人,并考虑将它们重新分解到库中以供将来的项目使用;一个好的候选人将是一个以上的开发人员必须在一个以上的项目上做的事情(例如)。
建立某种简单而清晰的图书馆治理方式——可以“拥有”特定图书馆并确保其整体质量的人(例如高级开发人员或团队负责人)。
到目前为止,我已经编写了我们办公室使用的大部分常用库。
这些类使我们所有人都可以更轻松地处理彼此的代码并了解它们的工作原理,因为我们在整个产品中都使用完全相同的接口。
就组织而言,所有 DLL 都与它们的源代码一起存储在我们都可以访问的办公室的共享开发驱动器上。(我们是一家很小的商店)
我们按功能拆分库。
Commmon.Ui.dll 具有用于 ui 元素的基类。Common.Data.Dll 是一种围绕企业库数据访问类的包装器。Common.Business 是不适合其中之一的其他常见类的垃圾场。
我们会根据需要创建其他专门的 dll。