[英]Where to put helper functions pertaining to class method in C++
假设我有一个这样的类Foo
:
foo.h :
namespace mine {
class Foo {
Widget widget_;
public:
void bar();
// some other members...
};
} // namespace mine
foo.cpp :
#include "foo.h"
namespace mine {
void Foo::bar() {
// Some very long code
}
} // namespace mine
出于可读性原因,我想将bar()
拆分为多个函数。 函数本身对Foo
(或除Foo::bar()
之外的任何其他实体)没有任何特殊意义,仅用于拆分bar()
,因此根据此讨论,我将在源文件中执行以下操作:
foo.cpp (重构):
#include "foo.h"
// anonymous namespace to put all helper functions
namespace {
void computeResult() { ... }
void modifyWidget(Widget& w) { ... }
void doThis() { ... }
void doThat(Widget& w) {
// ...
modifyWidget(w);
}
} // <anonymous> namespace
// actual methods are defined here
namespace mine {
void Foo::bar() {
::doThis();
::doThat(widget_);
::computeResult();
}
} // namespace mine
所以我在源文件中定义了一个匿名命名空间,以便定义辅助函数,这样我就有了静态链接,辅助函数在源文件外部是不可见的。 对我来说看起来很奇怪的一件事是类方法依赖于不属于类的函数,但是如果这是一个问题,我们甚至无法使用标准库。
Foo::widget_
给一些修改它的独立函数( doThat()
)是否有问题? 我在这里假设在静态链接辅助函数的狭窄上下文中,调用者/被调用者知道他们在做什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.