目前,我用Java编程并使用Maven相当多.因此,我已经习惯于过去4或5年来使用的命名方案和文件夹结构.
由于我最近开始学习C++,我意识到我不知道在哪里放置我的所有文件.我应该按命名空间还是按照它所在的层级来处理所有内容?例如,在哪里,我会保留一系列专门用于UI的文件,与用于帮助存储数据的文件相关联?
这种事情有什么标准吗?
显然,这个问题没有明确的答案.我只是在找一个好的向导.我不想开始学习C++,因为他花了太多时间来担心我的文件是如何布局的.我宁愿拥有一些好的模型,只需要编码即可.
以下是相当典型的......
third-party library
release
obj
debug
obj
include
src
sublib 1
sublib 2
mylibrary
release
obj
debug
obj
include
src
sublib 1
sublib 2
myapp
release
obj
debug
obj
subapp 1
subapp 2
mylittleapp
release
obj
debug
obj
Run Code Online (Sandbox Code Playgroud)
基本上,子项目的子文件夹对于较大的项目是常见的,但大多数特定项目具有src,include等的文件夹.每个构建配置的文件夹是常见的,并且将obj文件和其他中间文件保存在子文件夹中是个好主意.将子项目文件夹放在obj文件夹中可能很诱人,但通常这是不必要的 - obj文件夹不需要组织良好,所以唯一的问题是文件名冲突,最好的解决方法是拥有唯一的源文件名在(至少)每个项目内.
"include"文件夹应该IMO只包含其他项目将包含的标题 - 内部标题属于"src"文件夹.
将UI内容放在单独的文件夹中并不是一个坏主意,如果它足够大的话.我已经看到UI作为一个单独的静态链接顶级项目完成,我的意思是特定于应用程序,而不是(例如)wxWidgets.但是,通常情况下,如果它的价值完全分离,那么这个分工级别就是子项目.如何划分子项目通常更多地取决于特定于应用程序的块,因此它取决于UI内容是最好地作为单独的块处理还是作为与特定于任务的逻辑混合的单独块.
命名空间不是最常用的语言功能,可能是因为很多人使用"使用"这么多,他们没有太大的区别.主库项目的命名空间是有意义的,但是将子文件夹与命名空间1:1相关联并不是我所见过的.我个人有一个名称空间,其中包含我的大多数库代码,有一些子命名空间用于一般很少使用的东西,但在一些地方使用了很多(例如"按位"命名空间).子命名空间仅限于单个源/标头对,因此不需要子文件夹.大多数特定于库的选择都是通过包含正确的标题来完成的 - 除了我通常通过主项目顶级标题包含批次.
基本上,命名空间是一种避免命名冲突的方法.它们不一定与抽象或功能块或任何东西相关联.在一个特定的项目中,你可能最好只是确保名称不冲突.与"std"命名空间一样,将很多东西放在一个命名空间中也没关系.
如你所说,这不是一个明确的答案 - 当然有微小的变化和完全不同的方法.
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |