我有一个我写的程序,不是太大。除了主要功能外,它还有大约15个其他功能,可以在不同时间调用各种任务。代码在一个文件中工作得很好,就像现在一样。
然而,我想知道是否有人对是否更智能/更有效/更好的编程提出任何建议,将这些功能放在一个不同于main的单独文件中,或者它是否甚至根本不重要。如果是,为什么?如果不是,为什么不呢?
我不是C ++的新手,但绝对不是专家,所以如果你认为这个问题很愚蠢,请随时告诉我。
谢谢你的时间!
答案 0 :(得分:7)
取决于这些功能有多大。如果您的源文件开始长度超过几百行代码,则有理由将部分功能提取到一个(或多个)单独的文件中。
如果您可以根据职责和/或抽象级别将功能分组到不同的集合中,您可能更喜欢将它们分成不同的物理文件(当然是类别)。例如。某些函数可能与文件I / O一起使用,而其他函数则执行某些计算。或者某些函数在文件I / O中执行低级别的位翻转,而其他函数则使用前者来实现一些更抽象的功能。
对代码进行分区的另一个原因是,如果某些功能被多个客户端使用,但这显然不适用于您的情况。 (但是,如果你的应用程序在未来进一步开发和扩展,这可能会改变......)
答案 1 :(得分:3)
根据代码的相似性将代码分成不同的文件是很好的。如果您有多个类,可以按类拆分它。如果您有多个可以在其他程序中使用的函数,则应将它们放在自己的文件中以便于移植。
答案 2 :(得分:2)
由于您只提到了函数,我假设您的程序不是面向对象的。如果是的话,我建议每个.h / .cpp对有一个班级。在您的情况下,它取决于这些功能是否可以分组为2个或更多子集。如果是这样,我会将相关函数放在单独的.cpp模块中,并且总是有一个包含其原型的相应.h标题。
在同一模块中拥有所有这15个功能不一定正确或不正确。同样,如果它们都是强相关的,它们应该属于同一个模块。另一个决定的规则是模块大小本身。我发现很难管理已经增长到超过1000行的模块,这个阈值是一个警告标志,它应该被拆分。这两件事是相关的,通常当模块变得很大时,它也可能有两个或更多不同的函数组。
答案 3 :(得分:1)
假设每个函数都很小,那么在文件IMO之间拆分是没有意义的。
如果函数是几百行代码,那么最好将它拆分出来。主要是因为如果/当你扩展程序时它会更容易。
答案 4 :(得分:1)
我很擅长在任何可能的情况下使用标题类。它更有效,因为编译器可以通过这种方式执行更多优化,成本是编译时间更长。但是,如果您的程序完全包含在单个源文件中,您将获得相同的好处。
但是,如果您打算重用代码,则在逻辑单元之间进行拆分是明智的。无论依赖关系还是逻辑单元,类之间的系统划分甚至可以被认为是一种不好的做法(好吧,在java等其他语言中,你没有多少选择......)。
答案 5 :(得分:1)
我想说如果你最终需要使用 Ctrl + F 找到你正在寻找的功能,那么可能是时候开始打破文件了。
同样,如果您需要使用 Ctrl + F 在长函数中查找某段代码,可能是时候开始将其分成多个函数(或者编写更多函数)简洁的代码)。
如果您不得不花费大量时间来浏览代码,那么错误将更难以追踪(并且需要更多时间来修复)。
无论何时打破文件或功能,都要尝试以有意义的方式将它们分开;而不只是对你,而且对普通人。假设你是唯一会看你的代码的人是愚蠢的。如果你在缺席几年后再回到这个项目,那么你很可能会成为一个与现在不同的人。
答案 6 :(得分:0)
有人可能会认为较大的程序(例如商业开发的程序)会将代码保存在多个文件中。你能想象那个文件的大小!将这些良好实践扩展到小型项目是一个好主意。
就代码而言,通常在物理代码所在的位置上没有任何区别,因为它们最终都在同一个地方(你的共享库/ DLL或可执行文件)。
答案 7 :(得分:0)
如果您觉得您将在某些其他应用程序中重用某些代码,则将该部分拆分为不同的文件(标题和实现)。
除此之外,IMO,不要打扰。
微米。