[英]C++ reader function design: helper functions, class, private, over-engineering?
在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.