我正在阅读"清洁代码"这是提倡许多小功能。如果我在c ++中的代码中有很多小函数,那么我可能不希望用户执行这些函数。
我不想在我的标题中使用这些新功能 - 但我希望它们被声明。
我是否创建了两个头文件并且我的源包含两者? myfuncs_public.h
和myfuncs_private.h
?
答案 0 :(得分:3)
如果这些功能仅用于定义它们的.cpp文件中,则根本不要在标题中声明它们。如果它们在项目中的其他编译单元中使用但不是您的公共API的一部分,请在私有头文件中声明它们。如果他们是你的公共API的一部分(如果你有的话),请在公共头文件中声明它们。
作为一般规则,不要让符号比它需要的更明显。不要使用外部模块不应该调用的函数来混乱您的公共头文件,并且不要使用仅需要声明它们的文件的函数来混乱您的私有头文件。
如果确实想要整洁,请声明仅在编译单元中使用的函数,它们被定义为static
(或将它们放在匿名名称空间中)并检查哪些选项您的平台用于防止从目标库或可执行文件导出其他编译单元中使用的私有函数。
答案 1 :(得分:1)
奇怪的是,在现代,我们通常将.h
文件和.cpp
文件中的类分开,无论您的功能是否为私有。您最好在.h
文件中声明它并在.cpp
文件中实施。