这个问题主要涉及Unix/Linux风格的C++开发。我发现许多C ++库将其头文件存储在“include”文件夹中,源文件存储在“src”文件夹中。为了符合规范,我在自己的代码中也采用了这种方式。但我不确定是否应该对应用程序代码执行此操作。我看到过一些情况下使用扁平的目录结构。哪种方法是推荐的?
这个问题主要涉及Unix/Linux风格的C++开发。我发现许多C ++库将其头文件存储在“include”文件夹中,源文件存储在“src”文件夹中。为了符合规范,我在自己的代码中也采用了这种方式。但我不确定是否应该对应用程序代码执行此操作。我看到过一些情况下使用扁平的目录结构。哪种方法是推荐的?
我也将它们分开,但不是严格按照扩展名,而是按文件访问来分类。
假设你有一个模块管理客户信息,并使用 2 个类来完成这个功能:Customer 与 CustomerValidityChecker。同时,假设应用程序中的其他部分只需要知道 Customer 类,而 CustomerValidityChecker 仅由 Customer 类用于执行一些检查。
基于这些假设,我将文件存储如下:
公共文件夹(或包含文件夹):
私有文件夹(或源文件夹):
这样,调用者就立即清楚哪些部分是可访问的(公共),哪些部分是不可访问的。
include
和src
,那么您甚至需要进一步的include/libname
目录,因为否则您将需要疯狂的#include "blabla/include/header.h"
指令。 - Patrick Fromberg对于共享库而言,将它们分离是有意义的,因为它们可能以编译形式分发,没有源代码。我见过一些项目将“公共”头文件(可由项目或库外部的代码访问的头文件)分离出来,同时将“私有”头文件和源文件放在同一个目录中。我认为,在编写共享库或应用程序级别代码时,使用一致的方法是很好的,因为你永远不知道何时需要将应用程序级别编写的内容转换为更低级别的库,并被多个项目共享。
我不这样做;这似乎没有太大的优势。由于头文件往往与源文件有不同的扩展名,如果你真的感觉需要,可以让你的编辑器将它们分开显示--Visual Studio默认情况下会这样做,但我禁用了它,因为我更喜欢在一起看到它们。
我几乎总是创建include和src文件夹来分离我的源代码。我认为这样可以使文件夹更加整洁,也更容易在我的IDE中找到文件。但我认为这只是一种口味问题。
任何一种方法都是有效的。这取决于您想要遵循的编码风格如何实现。
我将头文件和源文件放在同一个目录(文件夹)中。我为不同的主题创建不同的文件夹。在调试和研究时,寻找头文件让我感到沮丧。有些商店只有两个文件夹:源代码和包含文件。这些目录往往会呈指数增长。重用代码最多成为一场噩梦。
在我看来,按主题组织更好。每个主题文件夹应该构建至少一个库。不同的项目可以通过搜索或包含文件夹轻松地包含主题。项目只需要包含库。智能构建引擎可以将主题文件夹列为依赖项。这加快了构建过程。
主题组织还为项目增加了一点安全性。由于文件位于不同的目录中,因此减少了对文件的意外损坏(例如删除错误文件或替换不同版本的文件)。删除“人物”文件夹中的文件不会影响“形状”文件夹中的文件。
这只是我的观点,你的情况可能会有所不同。