【问题标题】:What is the purpose of using multiple .cpp files in one solution?在一个解决方案中使用多个 .cpp 文件的目的是什么?
【发布时间】:2019-09-24 17:15:45
【问题描述】:

随着时间的推移,我学到了更多的 C++,我一直在寻找在一个解决方案中使用多个 .cpp 文件的方法。这已经无济于事了。

据我所知,多个 .cpp 文件只会增加更多的复杂性,以确保没有重复的整数或其他任何东西,并且所有想法都只是为了更好地对应用程序进行排序。这是这样做的唯一用途吗?

【问题讨论】:

  • 更好的代码组织、数据隔离/变量范围、在编译和链接越来越多的代码等时检查内存/资源使用情况等
  • 雷米-我现在明白了。感谢您的提醒。
  • 将一个不断增长的项目分成多个文件是恕我直言的主要目的。我知道的每一种严肃的编程语言都支持这一点。在 C++ 中,.cpp 文件通常是自己编译的。这使它成为一个翻译单元:Global namespace scope。曾经有一个很好的 Q/A SO: What is a "translation unit" in C++ 可能会有所帮助。
  • 关于.cpp 文件通常是自己编译的。 不是...禁止将#include.cpp 文件放在其他.cpp 文件中。这相当“违反常规”,可能会让(其他)读者感到困惑。 #included 文件不是翻译单元,而只是直接传递给编译器的文件。

标签: c++ file include


【解决方案1】:

作为一个初学者,我什至认为多个文件让我难以理解代码。但在完成了几个项目之后,我意识到这种模块化方法的重要性。 项目中有多个文件的原因有很多。这里我列出了其中的一些。

假设您在公司中,并且想要在许多员工之间分配任务。现在,如果您像他们一样处理单个文件,那么很难跟踪谁在编辑什么。因此,我们将任务分解为较小的任务,其中每个任务都可以由个人完成。我们为他提供了一个特定的界面。在 C++ 的情况下,我们可以提供一个带有公共方法和公共变量的头文件。所以现在这个人知道他可以从他的同事正在研究的部分中使用哪些方法。

因此,在这种情况下,多个文件提供以下功能:

  1. 分而治之:在同事之间分配任务,而不会有破坏他人代码的风险。
  2. 保持代码模块化,每个文件/类都有特定的功能。因此,将来如果我们想添加或删除一些功能,我们可以只编辑该类,而无需对整个代码库进行太多修改。
  3. 优化编译:假设您的代码中有 400 个文件,现在您更改了某个文件中的 1 行。现在您可以单独编译已编辑的文件。而如果它是一个巨大的文件,那么它会浪费时间来编译没有改变的东西。

关于复杂度,实际上将代码分布在不同的文件中会降低代码复杂度。

假设您正在做一个单独的项目。假设它有一些数据库、功能、输入输出、GUI、一些计算(如搜索)等。现在考虑如果你将所有这些东西包含在 1 个文件中,那么随着项目大小,将很难立即跟踪各种东西甚至创造者都没有意识到的地方快速增加。这将导致函数、变量、结构等的名称重复。现在每个文件中都没有函数log,用于记录其各自文件的数据库状态、输入输出等,您将拥有一个文件databaseLoginputLog 等。还有什么保证您不会在 GUI 中拥有一些其他功能,inputLog 将不是合适的标题。

假设您在项目中出现了一些错误或崩溃,由于要查看的内容较少,因此查看一个文件更容易。在一个文件中,您将很难跟踪哪些功能属于哪些功能。因此,调试变得简单了。

因此,简而言之,您可以说,如果文件名是根据其用途分配的,那么多行代码会降低而不是增加代码复杂度。

如果您尝试使用多个文件读取其他人的代码,那么这里有一些提示,

  1. 一次查看一个文件,然后找出它到底在做什么。大多数初学者都会错误地从 main 开始,然后在遇到时不断搜索函数。
  2. 我建议您记下每个函数的作用。
  3. 使用流程图。

当您处理项目时,请确保每个文件都有自己的用途,它是模块化的,功能只做一件事。确保文件根据其用途处于适当的层次结构中。此外,如果每天使用它们,您将来尝试和实施这些做法会更容易。祝你好运。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多