非C++OOP语言中的标头

Headers in non-C++ OOP Languages

本文关键字:C++OOP 语言      更新时间:2023-10-16

我一直在想,为什么非C++OOP语言(不确定是否还有其他使用头的语言)没有头文件?

好吧,我最担心的是,在C++中,我可以编写一个类头,并将其发送给我的伙伴,以便根据它编译其他代码,而我很乐意按照自己的节奏编写类的实际实现。

在没有标题的语言中如何实现这一点?或者,在我的理解中,有没有遗漏一些东西?

我如何与其他同事签订类合同,以便他们都能按照自己的节奏进行编码?我应该只做一些mock类而不实现任何方法,只使用mock返回来满足这种需求吗?

头文件是遗留下来的东西,因为编译器在没有开发人员提示的情况下无法编译所有源文件。

现代语言(事实上C++也可以这样做)使用接口或基类来实现契约设计。

C和C++是非常古老的语言,创建时编译器需要标识符的提前声明,以便一次性完成编译并将内存使用率降至最低(这是当时主要的性能考虑因素)。头文件的主要目的是提供这些声明,因此编译器可以简化必要的堆栈帧设置、内存分配、类型检查等。

最近的语言围绕着"更干净"的语言结构,并通过约定、检查、推导或它们的组合来获得C/C++所需的头部信息,这是以牺牲一些灵活性和性能为代价的。前者并不总是需要的,考虑到我们今天使用的系统的性能,后者在很大程度上无关紧要。。。

至于"集体合同"。。。在C/C++中,您的库可能定义了数千个函数,无论您在"导出"头中声明了哪些函数,它们都是可访问的,并且可以直接调用。最近的语言也是如此;基本上,文档取代了声明(即,使访问这些函数变得"容易"),但无论如何都可以调用它们。

因此,从技术上讲您也不需要C++头来进行"合同设计"。您本可以告诉客户"申报void foo( int )并调用它"。现代语言只是删除了中介,并立即将您指向文档。;-)