在多个.cpp
文件中分隔同一个类的函数或所有函数应该在同一个文件中是一个好习惯吗?
例如:
foobar.h中
#ifndef FOOBAR_H
#define FOOBAR_H
#include <QDebug>
class FooBar
{
public:
FooBar();
void foo();
void bar();
};
#endif // FOOBAR_H
foobar.cpp
#include "foobar.h"
FooBar::FooBar()
{
qDebug() << "Constructor";
}
Foo.cpp中
#include "foobar.h"
void FooBar::foo()
{
qDebug() << "Foo";
}
bar.cpp
#include "foobar.h"
void FooBar::bar()
{
qDebug() << "Bar";
}
注意:我只添加了Qt标记,因为该示例是在Qt中生成的,但这是与C ++相关的问题。
答案 0 :(得分:2)
机器不在乎。所以,你决定的唯一动力就是以人为本:开发者。
考虑一本书。您是否愿意将该书作为一个完整的实体,或许分成章节,或者在小纸片上分段?引用的位置很重要,类的实现应该适合单个文件。如果代码更容易维护,那么密切相关的类的实现也可以全部放入单个文件中。哎呀,如果它足够小,整个项目可以放到一个文件中。
就个人而言,我发现单个.cpp
文件长度超过3-4k行后很难导航。但是,拥有大量少于500行的文件同样令人痛苦。当然,IDE通过在使用,声明和定义之间提供更容易的导航来减少一些痛苦,但是文件太小在项目理解中几乎没有帮助。例如。 Java坚持一个公共级别的文件和一对一的关系是这方面的祸害,与我们对认知心理学的认识不一致。
答案 1 :(得分:2)
这取决于函数代码的大小,我个人认为代码的大小很少,我更喜欢将它们全部放在一个.h
文件中:
<强> foobar.h中强>
#ifndef FOOBAR_H
#define FOOBAR_H
#include <QDebug>
class FooBar {
public:
FooBar() {
qDebug() << "Constructor";
}
void foo() {
qDebug() << "Foo";
}
void bar() {
qDebug() << "Bar";
}
};
#endif // FOOBAR_H