我来自网络开发,我需要问C ++程序员他们如何管理基于模型的项目的目录?
我在Visual Studio C ++解决方案管理器中构建了我的项目,如下所示:
-> Header Files
--> Models
DatabaseEngine.interface.h
-> Resources
-> Source Files
--> Models
DatabaseEngine.cpp
--> Application
Core.cpp
Bootstrap.cpp
--> FrontController
---
我在Headers目录下创建了Model目录的完全副本,并附加了".interface"
名称,因为它们是接口,它们的实际实现位于Sources
下的镜像路径中
我有自定义类型,例如DBConnection
,我不知道放在哪里?我应该把它们放在一个名为CustomTypes.cpp
的文件中,还是应该将它们与相关的父模型/类/对象联系起来?
我关注的是会议和标准。
答案 0 :(得分:5)
没有任何标准,C ++是一个非常开放的世界,你会看到; )
所有关于制作最适合您的方法,但通常从已经实验过的人那里获取建议不会受到伤害。 就个人而言,我试图遵循这个惯例
/ProjectName
/src
/libs <- Libraries go here
/Models <- Assuming you want to make a library out of your models
User.h
User.cpp
... <- Putting header and implementations together is not a problem,
they should be edited in parallel oftentimes
/Utilities <- Should your library grow, you can make it more modular
by creating subdirectories
(that could contain subdirectories, etc.)
DBConnection.h
DBConnection.cpp
/apps <- define your applications here.
They probably rely on classes and functions defined in one or several of your libaries define above.
/ApplicationA
Core.h
Core.cpp
Bootstrap.h
Bootstrap.cpp
/resources
/doc
# Below are 'environment specific' folders.
/vs <- Visual studio project files
/xcode <- Xcode project files
.interface
部分可能不会对您造成太大影响,并且可能会混淆您的IDE(或其他工具),否则它们会将头文件与其实现文件相关联。 C ++提供类,供程序员定义自定义类型。在自己的头/实现文件对中定义自定义类型是很常见的。在您的情况下,DBConnection.h
将定义一个DBConnection类,其(非内联)方法将在DBConnection.cpp
中实现。
Personnaly,我不会害怕为每种类型创建一对文件,这使得未来您和其他程序员更容易找到定义类型的文件。您可以通过制作子文件夹来管理越来越多的文件,这将迫使您模块化您的设计。
当然,有时你需要定义一个非常短的类,与另一个类紧密耦合。如果您认为它们之间的链接足够强大,则可以将这两个类包含在一对公共文件中。
它可能不是所有项目的关注点,但此目录结构在环境和构建管理方面是可扩展的。 将项目文件保存在顶层的单独文件夹中,并定义源外构建,允许为其他IDE创建项目文件。
如果您应该采用这种方式,这种层次结构也很容易适用于CMake构建管理。 CMakeLists.txt
文件将放置在顶层(在ProjectName /下),此文件调用add_subdirectory(src)
,然后在ProjectName / src /等中调用CMakeLists.txt
。