7

我很想知道人们如何组织他们的代码库,尤其是在可重用组件方面。我在下面用 OO 术语谈论,但我对您如何为其他类型的语言组织库也很感兴趣。

例如:

  • 您是所有类库项目的忠实拥护者,还是更喜欢将所有内容保存在一个项目中?
  • 您是否重用了预构建的 DLL,或者您是否在当前工作中包含了以前项目中的各个类?如果是单独的课程,您是否在项目之间共享它们以确保所有课程都保持最新,或者您是否允许分支?
  • 您的可重用元素有多大?他们的专注度如何?他们是如何集中注意力的?
  • 您通过首选实践实现了何种程度的重用?

等等

编辑

我不是在这里寻找具体的指导,我只是对人们的思想和实践感兴趣。我对在不同项目之间重用代码特别感兴趣,而不是在单个项目中重用。(不幸的是,这里使用“项目”具有误导性——我的意思是在为客户开展的实际项目之间重用,而不是 Visual Studio 意义上的项目。)

4

4 回答 4

6

它通常可以通过部署注意事项来指导:

您将如何部署(即您将在生产机器上复制什么)?

如果您正在部署的是打包的组件(即 dll、jar、war...),那么将“代码库”组织为一组打包的文件集合是明智的。
这样,您将直接使用 -- dll、jar、war、... -- 进行开发,这些将部署在生产平台上。
这个想法是:如果它适用于那些打包的文件,它可能仍然可以在生产中工作。


在不同项目之间而不是在单个项目中重用代码。

我认为这种重用在“组件”方法中更容易(就像问题“ GIT 中的供应商分支”中讨论的那样)

超过 40 个当前项目,我们实现了:

  • 通过将任何纯技术方面系统地隔离到独立框架(通常是日志框架、异常框架、KPI - 关键绩效指标 - 框架等)中来进行技术重用
    这些技术组件被重用到其他所有项目中。
  • 通过设置清晰的应用架构来实现功能重用,以便将任何功能域(给定业务和功能规范)划分为明确定义的应用程序。例如,这通常会涉及一个总线层,它也是公开任何其他项目重用的服务的绝佳候选者。

总结:
对于大型功能域,单个项目难以管理,一个好的应用架构将导致自然的代码重用。

于 2009-05-10T19:31:58.873 回答
4

我们遵循以下原则:

  • 发布-重用等效原则:重用的粒度就是发布的粒度。
  • 通用关闭原则:包中的类应该一起关闭以防止相同类型的更改。
  • 通用重用原则:包中的类一起重用。
  • 非循环依赖原则:包依赖图中不允许有循环。
  • 稳定依赖原则:在稳定的方向上依赖。
  • 稳定抽象原则:一个包应该是抽象的,因为它是稳定的。

您可以在此处此处找到更多信息。

于 2009-05-10T19:31:55.287 回答
0

这取决于你工作的平台。我是一名(自豪的)Java 开发人员,我们有很好的工具来组织我们的依赖项,例如MavenIvy

于 2009-05-10T19:31:02.883 回答
0

无论您决定其他什么,良好的源代码控制对此都至关重要,因为它允许您以任何您喜欢的方式实施您的策略,而不会产生大量不相关的库副本。良好的分支支持是必不可少的。

于 2009-05-10T23:05:22.520 回答