“管理依赖关系以实现模块化”

时间:2009-11-25 04:49:12

标签: dependencies modularity

我可以做出上述陈述吗?是对还是不对? 模块性和依赖性是不同的还是相互关联的? 帮助...

3 个答案:

答案 0 :(得分:1)

它们是不同的东西,但显然它们是相关的。例如,如果你有两个(涉嫌;-)组件A和B,但A依赖于B B依赖于A,那么它们并不是真正独特的组件 - 它们是一个奇怪的什么显然仍然是一个组成部分。为了实现真正的模块化,必须牢记依赖关系 - Dependency Inversion是实现干净,正确依赖关系的关键技术之一。我还强烈推荐this classic book - 如果您选择的语言是C ++,则最相关,但它确实包含了大量适用于许多其他语言的建议。

答案 1 :(得分:0)

我同意Alex的观点 - 如果模块纠缠不清,那么你真的没有不同的模块。并且外部的模块间依赖性比更可见/本地化的内部结构更难控制。事实上,他们经常被忽视。

此外,虽然纠结是一种客观的,可衡量的反模式,但您应该考虑哪些依赖规则对您的特定项目和流程有意义。这些更主观,只能由你定义。

关键是,无论你决定什么约束,开发人员应该很容易知道它们存在以及是否/什么时候打破它们,并且如果违规使其进入集成/构建,则会向某人发出警告。

Structure101支持所有这些,您可能还需要查看LattixSotoArc and SonarJ。 Jdepends是一个开源项目,可以检测周期等。但是现在开始使用某些东西 - 代码永远不会随着时间的推移而变得更少

答案 2 :(得分:0)

假设我有一个庞大的整体代码体。这取决于它之外没有代码。我想我们不会把它称为模块化。

假设我有一个清晰,精简,纤薄的代码体,另一方面,它依赖于60个外部代码体。同样,我认为我们也不会将其称为模块化。

因此,我认为,模块化更多地是关于我们人类的认知局限性,而不是其他任何东西。

所以:

  1. 依赖项数量应该是可管理的。耦合?
  2. 应该很容易找到发生依赖关系的位置。 PIN的隔离(Atul Apte的集成点)?
  3. 依赖于其他代码的代码大小也应该是可管理的。凝聚力?