1
4
我不确定你到底在问什么问题,所以我会尝试重新措辞:
拥有单独的接口或头文件的主要好处是 它减少了读者的认知负担 . 如果你试图理解一个大系统,你可以解决一个 实施 一次只需读取 接口 它依赖的其他实现/类/模块。这是一个主要的好处,而且不需要单独的接口文件(如Java)或甚至不能使用的语言。 表达 单独文件中的接口(如haskell)通常提供诸如doxygen或haddock之类的工具,以便从实现中生成供人们阅读的单独接口。 我非常喜欢标准ML、目标CAML和modula-2/3这样的语言,它们有一个单独的接口文件可供审查。在C语言中使用单独的头文件也很好,但没有那么好,因为一般来说,编译器无法独立地检查头文件。(C++头文件不太好,因为它们允许私有信息(如私有字段或内联方法的实现)泄漏到头文件中,从而使公共信息被稀释)。 语言设计界的民间传说是,对于典型的静态类型语言,一个模块中只有大约10%的信息是公开的(用代码行来衡量)。通过将这些信息放在单独的头文件中,可以将读卡器的工作负载减少大约10倍。 |
2
9
它们允许您分发库的API,以便编译器编译正确的代码。 就像在C中一样,不包括整个实现,只包括 链接时在库中 .
从这个意义上说,好处主要是针对编译器。因此,在say中安装二进制库
当编译器/链接器/解释器不需要它们时,该语言的约定是最好的方法,因为这正是其他程序员希望找到的。预计会是传统的。 C等语言包括 检查 从二进制blob获取信息的库,因此在许多这些语言中,您不需要头。工具,如 Cecil 对于C还允许您自己检查库(甚至修改库)。 简而言之,有些语言消除了报头的好处,并允许检查库中的所有 编译时间 确保链接代码符合相同的接口/API规范所需的信息。 |
3
2
我认为你错了:例如C++仍然具有公有私有和受保护,但是将实现从接口与头文件分开(虽然这不适用于函数模板)是很常见的。 我认为在创建库时,将接口与实现分开是一个好主意,因为这样就不会向客户机公开任何内容的内部工作,因此客户机决不能故意生成依赖于实现的代码。如果你想分拆,这取决于你自己。我必须承认,对于我自己的代码(我为自己编写的小程序),我不经常使用它。 |
4
1
在C的上下文中,头文件实现在我们的程序中带来了大量的可读性,这变得容易理解。如果这是系统地编写代码的方式,那么头文件会在我们的主函数文件(.c)和我们正在使用的其他(.c)文件之间带来抽象、标准化和松耦合。 |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 6 年前 |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
RudziankoÅ · 合并排序数组算法 7 年前 |
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
hippietrail · 确定浮点数中前导零的数量 7 年前 |