模块需求
一个好的模块系统应该有助于解决软件工程的一些基本需求:
-
有办法将代码库分割成多个文件。这有助于保持代码的条理性,使其更易于理解,同时也有助于独立开发和测试各种功能。
-
允许在不同项目中重复使用代码。事实上,一个模块可以实现对不同项目有用的通用功能。将此类功能组织在模块中,可以更容易地将其引入到可能需要使用它的不同项目中。
-
封装(或信息隐藏)。一般来说,隐藏实现的复杂性并只公开职责明确的简单接口是个好主意。大多数模块系统允许有选择性地隐藏代码的私有部分,同时公开公共接口,如供模块用户使用的函数、类或对象。
-
管理依赖关系。一个好的模块系统应能让模块开发人员轻松地在现有模块(包括第三方模块)的基础上进行构建。模块系统还应方便模块用户导入特定模块运行所需的依赖关系链(瞬时依赖关系)。
明确模块和模块系统之间的区别非常重要。我们可以把模块定义为软件的实际单元,而模块系统则是允许我们定义模块并在项目中使用模块的语法和工具。