C++读取器函数设计:帮助程序函数、类、私有、过度工程
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
相关文章:
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 如何从另一个文件继承私有成员变量和公共函数
- 友元函数无法访问私有数据成员 (c++)
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 父类的私有函数会导致对具有相同名称和相似参数的子类中的公共函数的不明确调用
- C++17 没有默认构造函数的地图放置(私有默认构造函数)
- C++ 友元函数和私有构造函数
- 类成员函数无法访问同一类的私有结构节点?
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何实现返回受保护结构的私有函数
- 将此私有删除器函数包装在结构中的目的是什么?
- 复制赋值函数如何访问另一个对象的私有成员(Stroustroup 原则和实践书)?
- 在类的私有部分中声明一个数组,并在构造函数中分配数组值
- 如何从子类的构造函数初始化父类的私有成员
- 如何为具有私有成员的派生类实现移动构造函数
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 如何构造一个类型特征,可以判断一个类型的私有方法是否可以在另一个类型的构造函数中调用?
- 使用使析构函数私有
- 错误 LNK2019:函数"私有:无效__cdecl"中引用的未解析的外部符号 KHPU
- 如何使派生类函数私有,以便基类指针无法访问它