C++读取器函数设计:帮助程序函数、类、私有、过度工程

C++ reader function design: helper functions, class, private, over-engineering?

本文关键字:函数 私有 帮助程序 读取 C++      更新时间:2023-10-16

在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;
}

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

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

头文件:

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
相关文章: