如何构建模块?

时间:2013-08-04 03:34:57

标签: module package

在我第一次尝试创建一个太大而无法放入一个源文件的程序时,我一直遇到将它分成几个的问题。例如,如果一个模块要被其他几个模块使用,我该怎么办,最终被包含在另一个模块中。比方说,linear_algebra.cpp(或.py或其他)需要tensor_operations.cpp,它们都需要matrix_operations.cpp。我应该将matrix_operations.cpp包含在其他文件中,还是只包含一个或哪些?那么如果我将matrix_operations添加到其他模块中,那么在某些方面突然出现需要linear_algebra呢? 这整个业务一直让我困惑。有时我想出来,但必须有一个“正确”的方式,这样你就不必自己弄明白了。

那么,我在哪里可以获得关于如何正确地做这类事情的手册(或者至少他们称之为什么,因为当我说“这种东西”时谷歌不理解我?)

1 个答案:

答案 0 :(得分:2)

听起来您正试图避免循环依赖,这是您要搜索的关键术语。

例如,如果您有模块A和B并且您发现A需要引用B 并且 B需要引用A,那么您在A和B之间存在循环依赖关系。换句话说,如果你把模块之间的关系描绘成一个带有显示依赖关系的箭头的图形,那么在A和B之间会有一对箭头。)

解决方案是识别B所需的A中的代码位,将该位重构为新模块C,然后从A和B中引用C.(这意味着B不需要引用再来一次。)

所以你从

开始
A <----> B

A -----> B
|        |
\/       |
   /     |
C  ------
   \

通过这样做,您可以从几个大型模块转到许多较小的模块,它们之间的耦合更松散。反过来,这应该使您的代码更易于维护和重用。