8

我有一个正在编写的程序,不是太大。除了主要功能外,它还有大约 15 个其他功能,在不同时间调用各种任务。代码在一个文件中都可以正常工作,就像现在一样。

但是,我想知道是否有人对将这些函数放在与 main 所在位置不同的单独文件中是否更智能/更有效/更好的编程有任何建议,或者它是否重要。如果是,为什么?如果没有,为什么不呢?

我不是 C++ 新手,但也绝对不是专家,所以如果你认为这个问题很愚蠢,请随时告诉我。

谢谢你的时间!

4

8 回答 8

7

取决于这些功能有多大。如果您的源文件的代码长度开始超过数百行,则有理由将部分功能提取到一个(或多个)单独的文件中。

如果您可以根据它们的职责和/或它们的抽象级别将函数分组为不同的集合,那么您可能更愿意将它们分成不同的物理文件(当然还有类)。例如,一些函数可能与文件 I/O 一起工作,而另一些函数则进行一些计算。或者一些函数在文件 I/O 中进行低级位翻转,而另一些则在前者的基础上实现一些更抽象的功能。

对代码进行分区的另一个原因是,如果某些功能被多个客户使用,但这显然不适用于您的情况。(但是,如果 / 随着您的应用程序在未来进一步开发和扩展,这可能会改变......)

于 2010-04-19T14:26:10.310 回答
3

最好根据它们的相似性将代码分成不同的文件。如果你有多个班级,你可以按班级分解它。如果您有几个可以在其他程序中使用的功能,您应该将它们放在自己的文件中以方便移植。

于 2010-04-19T14:28:14.720 回答
2

由于您只提到了函数,我假设您的程序不是面向对象的。如果是这样,我建议每个 .h/.cpp 对有一个类。在您的情况下,这取决于这些功能是否可以分为 2 个或更多子集。如果是这样,我会将相关函数放在单独的 .cpp 模块中,并且始终有一个包含其原型的相应 .h 标头。

在同一个模块中拥有所有这 15 个功能不一定正确或不正确。同样,如果它们都是强相关的,它们应该属于同一个模块。另一个需要决定的规则是模块大小本身。我发现很难管理一个已经增长到 1000 多行的模块,这个阈值是一个警告信号,它应该被拆分。这两件事是相关的,通常当模块变得这么大时,它也可能具有两个或更多不同的功能组。

于 2010-04-19T14:58:38.890 回答
1

假设每个函数都很小,那么在文件之间拆分它是没有意义的,IMO。

如果函数是几百行代码,那么最好将其拆分出来。主要是因为如果/当您扩展程序时,它会更容易。

于 2010-04-19T14:26:08.453 回答
1

我很擅长在可能的情况下只使用标题类。它更高效,因为编译器可以通过这种方式执行更多优化,成本是编译时间更长。但是您将获得同样的好处,因为您的程序完全包含在单个源文件中。

但是,如果您打算重用您的代码,明智的做法是在逻辑单元之间拆分它。无论依赖关系或逻辑单元如何,在类之间进行系统拆分甚至可能被认为是一种不好的做法(好吧,在其他一些语言(如 java)中,您没有太多选择......)。

于 2010-04-19T14:31:32.403 回答
1

我想说,如果您最终需要使用Ctrl+F来查找您正在寻找的功能,那么可能是时候开始分解文件了。

同样,如果您需要使用Ctrl+F在长函数中查找某段代码,则可能是时候开始将其分成多个函数(或编写更简洁的代码)。

如果您不得不花费大量时间钻研代码,那么追踪错误将更加困难(并且修复更耗时)。

但是,无论何时您要分解文件或函数,都请尝试以有意义的方式将它们分开;不仅对您,对普通人也是如此。假设您是唯一会查看您的代码的人是愚蠢的。如果你在离开几年后回到这个项目,你很可能会和现在不同。

于 2010-04-19T19:29:00.877 回答
0

人们可能会假设较大的程序(例如商业开发的程序)将其代码保存在多个文件中。你能想象那个文件的大小吗!将这种良好实践扩展到小型项目也是一个好主意。

不过,就代码而言,物理代码所在的位置通常没有任何区别,因为它们最终都在同一个地方(您的共享库/DLL 或可执行文件)。

于 2010-04-19T14:56:23.483 回答
0

如果您觉得您会在其他应用程序中重用代码的某些部分,则将该部分拆分为不同的文件(头文件和实现)。

除此之外,IMO,不要打扰。

M。

于 2010-04-19T17:11:39.590 回答