我应该更关心包装之间或分销单位之间的耦合吗?


2

我一直在寻找指标coupling,也看DSM

我一直在使用的工具之一是模块与作为分布单元的模块(在本例中为.net程序集)之间的耦合。

我觉得我应该更关注包(或名称空间)之间的耦合而不是分布单元。

我应该更关心包/名称空间之间的耦合(确保抽象只依赖于抽象,具体类型取决于抽象,并且它们在依赖中没有周期,因此重构和扩展很容易),还是应该关注与我是否可以部署新版本而不需要更新未改变的分发单元?

其他人测量的是什么?

对于它的价值,我的直觉是,如果我专注于包/名称空间耦合,那么分配耦合单元将免费或至少更容易。

3

首先,很容易过分看待依赖和耦合。确保你没有过度复杂化。

有了这个免责声明,这是我的建议。

有真的3至依赖性/耦合管理不同的观点: 1)物理结构(即组件的依赖关系) 2)逻辑结构(即命名空间依赖性) 3)实现结构(即类依赖性)

对于大型应用程序,您至少需要检查所有3个,但您通常可以优先考虑。

对于客户端部署的应用程序,编号1可能非常重要(即插件等)。对于部署在企业内部的应用程序(即asp.net),项目#1通常不是那么重要(不包括跨多个应用程序重用的框架)。您通常可以轻松部署整个应用程序,不会为#1复杂的结构开销。

项目#2往往是更多的可维护性问题。知道你的图层边界及其与命名空间的关系(例如,你是在每个命名空间上做1层还是你在逻辑层上打包的方式不同)。有时,工具可以通过查看逻辑依赖关系结构来帮助您实施层边界。

项目#3真的是要做好课堂设计。每个优秀的开发人员都应该付出相当大的努力,以确保他只在他的课堂上承担适当的依赖。这说起来容易做起来难,而且通常是一项必须随着时间的推移才能获得的技能。

为了让问题更接近您的问题的核心,项目#1实际上是关于如何在VS解决方案中布置项目。所以这不是一个要衡量的项目。它更多的是你在开始时设置的东西,让它跑步。项目#2是你可能使用工具在构建期间检查是否开发人员违反了任何规则的东西。这不仅仅是一个衡量标准,而是更多的检查。项目#3真的是你想要好好看看的。在代码库中查找具有大量耦合的类将成为困难点,确保这些人的质量。此外,在此级别进行测量可以让您深入了解代码库的质量(总体),因为它正在发展。另外,如果有人在你的代码库中检查了一些非常粗糙的代码,它会给你一个红旗。

因此,如果您想优先考虑,请快速浏览#1和#2。知道他们应该看起来像什么。但对于大多数应用程序,项目#3应该花费大部分时间。

这个答案当然不包括巨大的框架(如.NET BCL)。那些婴儿需要非常小心地注意#1。 :-)

否则,你最终像这样的问题: “.NET Framework的当前版本包括各种基于GUI库的东西不会在Server Core上正常工作” http://www.winsupersite.com/showcase/win2008_ntk.asp

如果无法在Windows Server 2008的无GUI安装上运行.NET,因为该框架需要依赖GUI库...

最后一件事。确保你熟悉良好的依赖/耦合管理背后的原则。你可以在这里找到一个很好的列表:

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

  0

一个伟大的回答,谢谢。这有助于我优先考虑并重视我所看到的内容。 23 9月. 082008-09-23 23:13:08


0

分布单元之间的耦合和依赖循环更加“致命”,因为它可能会使部署程序变得非常困难 - 有时甚至会使编译程序变得非常困难。

你大部分都是正确的,一个很好的顶层设计,将代码分成逻辑包,清除和预定义的依赖关系只会让你获得最大的方式,唯一缺少的是将包正确分离为分布单元。