是否应从头文件声明中排除辅助函数?(C++)

Should helper functions be excluded from header file declarations? (C++)

本文关键字:函数 C++ 排除 文件 声明 是否      更新时间:2023-10-16

是否应将仅在实现文件中使用的辅助函数从头文件声明中排除?

我所说的helper函数是指一个方便函数,它与类密切相关,但不表示类上的操作,不需要访问成员变量,因此不是一个方法。

一方面,将它们包含在头文件中使头文件成为相应c++实现的全面参考。另一方面,它又引入了一段代码来维护一致性。更重要的是,包含辅助函数会鼓励对抽象层的轻微违反,因为该函数不应该在其他上下文中运行,尽管不会以严重的方式运行,因为只要辅助函数本身没有破坏它所使用的类的封装,就没有损坏类状态的风险。

一方面,将它们包含在头文件中使头文件成为相应c++实现的全面参考。

这不是头文件的目的。头文件应该是接口的引用,而不是实现。有些实现细节有时会泄露出去,但应尽可能避免这种情况。

因此,回答你的头条问题:是的。

如果仅在实现的一部分中使用它们,则应将它们从主头文件中排除。但是,如果您希望测试这些函数,则需要将对它们的引用添加到单独的头文件中。

如果在实现的多个部分中使用它们,它们将属于自己的内部头文件,以便可以共享。