类、包、命名空间和模块之间有啥区别?

Posted

技术标签:

【中文标题】类、包、命名空间和模块之间有啥区别?【英文标题】:What are the differences between classes, packages, namespaces, and modules?类、包、命名空间和模块之间有什么区别? 【发布时间】:2019-09-13 02:45:15 【问题描述】:

我正在尝试确定最合适/通用的术语是什么,用于引用定义可重用对象的文件或文件组。我最常听到的术语是类、包、命名空间、模块、单元和组件,但我不确定它们之间的区别是什么,或者它们是否是不同语言普遍接受的术语。

【问题讨论】:

您在寻找***的链接吗? 【参考方案1】:

通常,这些术语用于许多不同的技术。

命名空间和包有点相似,因为它们通常是“存储类的相对路径”。大多数情况下,包或命名空间与文件所在的路径相同(但语法可能不同)。

类是一种数据结构,是在逻辑上执行特定操作的代码单元。将代码分解为恰当命名的类,将它们放入恰当命名的包/命名空间中,这有助于在需要时通过查看项目结构及其包含的文件来找到您正在搜索的代码。这种“架构问题”是开发易于维护的软件的挑战之一。

然后,当您的软件变得太大时,您可能希望将代码分解为“模块”。这基本上意味着,与其拥有一个包含所有源代码的大项目,您将“提取”所有链接到功能的类(例如,如果您有一个搜索引擎,您可能希望将所有代码隔离在一个不同的“模块”基本上是另一个文件夹/项目)。这样,您还可以将您的搜索引擎重用于另一个完全不同的项目,而无需复制(因此加倍)您的代码......如果您要在搜索引擎中进行更改,这将节省大量维护工作你想要在这两个项目中。

【讨论】:

以上是关于类、包、命名空间和模块之间有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

F# 中模块和命名空间之间的区别

XSD:命名空间和默认命名空间有啥区别

django url中的实例命名空间和应用程序命名空间有啥区别?

命名空间和类有啥区别? [关闭]

命名空间,类,对象和实例之间有什么区别?

在 PHP 中导入类和命名空间:前导反斜杠有啥区别?