非C++OOP语言中的标头
Headers in non-C++ OOP Languages
我一直在想,为什么非C++OOP语言(不确定是否还有其他使用头的语言)没有头文件?
好吧,我最担心的是,在C++中,我可以编写一个类头,并将其发送给我的伙伴,以便根据它编译其他代码,而我很乐意按照自己的节奏编写类的实际实现。
在没有标题的语言中如何实现这一点?或者,在我的理解中,有没有遗漏一些东西?
我如何与其他同事签订类合同,以便他们都能按照自己的节奏进行编码?我应该只做一些mock类而不实现任何方法,只使用mock返回来满足这种需求吗?
头文件是遗留下来的东西,因为编译器在没有开发人员提示的情况下无法编译所有源文件。
现代语言(事实上C++也可以这样做)使用接口或基类来实现契约设计。
C和C++是非常古老的语言,创建时编译器需要标识符的提前声明,以便一次性完成编译并将内存使用率降至最低(这是当时主要的性能考虑因素)。头文件的主要目的是提供这些声明,因此编译器可以简化必要的堆栈帧设置、内存分配、类型检查等。
最近的语言围绕着"更干净"的语言结构,并通过约定、检查、推导或它们的组合来获得C/C++所需的头部信息,这是以牺牲一些灵活性和性能为代价的。前者并不总是需要的,考虑到我们今天使用的系统的性能,后者在很大程度上无关紧要。。。
至于"集体合同"。。。在C/C++中,您的库可能定义了数千个函数,无论您在"导出"头中声明了哪些函数,它们都是可访问的,并且可以直接调用。最近的语言也是如此;基本上,文档取代了声明(即,使访问这些函数变得"容易"),但无论如何都可以调用它们。
因此,从技术上讲您也不需要C++头来进行"合同设计"。您本可以告诉客户"申报void foo( int )
并调用它"。现代语言只是删除了中介,并立即将您指向文档。;-)
- 不同语言中相同代码的不同行为
- c++中的oop(密码生成)
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- OOP 中的单成员指针
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- 刚接触C++,难以理解语言的细微差别
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 我的C++语言蛮力算法有问题
- OOP使用不同的结构与孩子一起构建建议
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- OOP 标识派生对象
- 垃圾回收的概念与非 OOP 语言有何关系
- 非C++OOP语言中的标头