VS&C++工程-如何高效管理具有大量代码文件的C++工程和组织工程架构

1 篇文章 0 订阅

一,前言

  • ❄️当你经常使用C#的VS(Visual Studio IDE,以下简称VS)工程时,C#和VS这个宇宙最强IDE配合的相当出色,你可以在VS解决方案中轻松管理你的代码结构,并且重要的是实际工程目录也是与解决方案中基本同步,所以一手操作都可以在VS解决方案中做好管理代码工程操作,相当省心!!!
  • ⚡️而C++在VS的解决方案中,呈现的是显示代码文件目录路径与解决方案筛选器中分离,很难做到同步管理一步到位,所以就像Linux之父林纳斯·托瓦兹曾经多次炮轰C++一样,所以从管理工程代码的角度,我觉得管理C++工程并不是简单的事,当然这个与VS这个IDE的配合方式也有关,但是归根到底是C++的历史原因和我认为C++并不是现代高级的语言(中高级语言),或者说即使有一种好的方式去编写C++代码和管理,C++工程实现同样的功能的速度也会比C# 慢很多,并且C++工程比较考验使用者的本身技术和工程管理能力,对于大型工程这个依赖特别明显!!!
    下面探讨了一种方便在VS中管理C++代码的实现方式!!!

二,现有C++工程代码结构的弊端

2.1现有的代码层次管理方式

  • 一般来说,在VS C++工程中,是以解决方案的形式去编写和管理代码文件的;
  • 解决方案中,代码文件的层次和分类关系是以筛选器的方式去实现的,然后在对应的筛选器下添加对应的代码文件(一般是新建的),如下:
    在这里插入图片描述
    在这里插入图片描述

2.2样例,使用筛选器管理代码

1️⃣在VS C++项目中,我们使用了以下层次来管理C++代码,如下:
在这里插入图片描述
2️⃣实际的解决方案层次,也如上面一样,如下图所示:
在这里插入图片描述
3️⃣但是,打开工程文件目录,可以看到,工程目录下,就是添加对应的代码文件,就是说工程真实目录的代码路径关系,并没有像解决方案中实现对应层次和分类关系,如下图

在这里插入图片描述

总结:

  • 如果只在VS解决方案中管理代码层次关系的话,使用筛选器就够了;
  • 如果考虑后续的代码工程协同管理和代码文件巨量的需求的话,那么就要有必要考虑实际目录下工程代码分类和解决方案中同步了,因为代码文件那么多,对工程目录下的文件管理是个挑战,并且万一解决方案有问题要重构代码工程,这是个很头疼的事,这就是第三节所在的重要意义!

三,如何高效管理工程代码结构

3.1代码文件实际目录分类和解决方案同步的一种方式

1️⃣首先在解决方案资源管理器中,点击显示所有文件 按钮,切换到工程目录下的实际文件管理,如下:
在这里插入图片描述
切换后,可以看到,目前工程目录只有一个代码文件,如下面两张图:
在这里插入图片描述
实际的工程目录下的文件分布,相关的代码文件只有一个,和上图文件一致(除了工程文件和git相关文件):
在这里插入图片描述
2️⃣在切换后的视图,按目录显示文件,右键菜单新建所要分类的文件夹(可以自己想要的层次关系去新建,父目录就是你右键的目录,如右键点击项目工程就是根目录,会在子目录生成想要的文件夹),如下:
在这里插入图片描述

  • 然后在各自的文件夹中添加所需的代码文件,已经分别在A,B文件夹中添加的A.cpp,B.cpp代码文件,如下:
    在这里插入图片描述
  • 打开实际的工程目录文件夹,可以发现确实创建了这两个分类文件夹,如下:
    在这里插入图片描述
    3️⃣然后切换回筛选器显示所有文件,新建对应的筛选器,把代码文件剪切到对应筛选器里面,如下:
    在这里插入图片描述
  • 新建A,B两个筛选器,如下:
    在这里插入图片描述
    在这里插入图片描述
  • 把对应的代码文件,分别剪切到各自的筛选器中,保持筛选器显示所以文件(虚拟的,相对解决方案中存在)和文件夹显示所有文件(真实的,存在在真实文件目录下)的层次分类关系一样,如下:
    在这里插入图片描述
    4️⃣按照上面的步骤,你的解决方案的管理代码文件层次和真实分类一样,便于统一管理和阅读,大大增强了工程管理的可持续性!

3.2关于3.1可能遇到的问题和解决方法

3.2.1头文件引用:

  • 问题:由于实际的代码文件的实际路径改变,在引用一些基本头文件的时候,IDE会提示查找不到,进而影响后续编译,例如在上面B.cpp文件编译时,会提示该文件缺少pch.h,从而无法进行后续编译!
  • 原因分析:
    • 可以看到由于B文件夹的存在,B.cpp默认文件路径已经变成二级目录,而pch.h是在工程根目录(一级目录下),所以文件处于不同层次,并不能直接索引到,所以这就是问题所在了;
    • pch.h是VS工程所需的一个编译头文件,一般在代码文件中,第一行要正确引用他;
  • 解决方法:
    • 在附加包含目录配置下添加工程所在的目录(即pch.h所在的目录),依次配置好即可,如下:
    • 在这里插入图片描述

3.2.2头文件位置放置问题

1️⃣在按目录显示所有文件中,分别在对应分类的文件夹添加对应的头文件即可,如下:
在这里插入图片描述

2️⃣切换会按筛选器显示所有文件后,前面添加的头文件会自动添加到工程解决方案下的头文件目录中,为了方便引用,我们不必在按筛选器显示所有文件下要对对应的头文件放置到对应的A,B筛选器中,保持现状即可!如下:
在这里插入图片描述

3.3一些编写C++代码工程的建议

  • 1️⃣在一般C++代码工程中,不用使用文件夹进行分类,特别是在小型微量的代码工程中;
  • 2️⃣如果你的代码工程里面有许许多多的代码文件,后续需要重构和方便阅读,建议按3.1的方式去组织你的代码结构;
  • 实际代码文件的分类和层次关系不必和筛选器一样,给实际代码文件按文件夹分类,只是方便管理和阅读代码工程,如果为了更方便,筛选器中可以出现与实际文件分类不一样的组织方式,但是要考虑发生什么问题,方不方便解决,这很重要!

四,参考


最后,文中若有不足,敬请批评指正!!!

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值