0

在 C++ 中,我想实现一个阅读器函数,即只执行一次的方法,返回一些东西然后消失。阅读过程有点复杂,所以我想我最好把它分成一个read(filename)和几个辅助函数。为了确保它们不会被意外访问,我想我将整个东西包装在一个无状态类中,并将这些辅助函数标记为私有。但是,这会产生代码开销,即必须先创建读取器类的实例,然后再调用read(filename)它。好的,让我们创建一个辅助函数,创建所述类的一个实例,调用read(filename)、转储它并返回读取的输出。

class Reader
{
public:
Reader();

virtual
~Reader();

OutputData
read(const std::string & fileName);

private:
helper1_();
helper2_();
helper3_();
};

OutputData
ReadIt(const std::string & fileName)
{
Reader r();
OutputData out = r.read(fileName);
return out;
}

嗯,这闻起来有点过度设计。你对此有何看法?

4

1 回答 1

4

这听起来不错,但如果您只需要一组没有状态的独立辅助函数,那么最好使用自由函数并将它们隐藏在实现中。一种方法是将所有帮助程序放在实现文件中的匿名名称空间中。

头文件:

namespace Reader {

OutputData reatIt(const std::string& filename);

} // Reader namespace

实施文件

namespace Reader {

namespace {

void helper1_() { .... }
void helper2_() { .... }
void helper3_() { .... }

} // anonymous namespace

readIt(const std::string& filename) {
  // use helpers here. Client code will never know.
}

} // Reader namespace
于 2012-08-10T15:21:40.340 回答