如何为一个简单的转换例程设计一个接口
How to design an interface for a simple conversion routine?
我有一个简单的regex转换方法,用于对作为std::string
传入的HTML进行一些小处理。方法看起来像:
std::string ParseQuotedPrintableHtml( std::string const& html );
我想把这个方法设计成某种小型库,可以在我的整个代码库中使用。由于它只是一个单独的函数,人们可能会倾向于创建一个Utility类(或命名空间)并将函数填充在其中。我觉得这是一个有点天真的设计。关于如何将这样的功能设计到一个集中且可访问的位置,有什么好的经验法则建议吗?
编辑
我还应该提到,这个函数调用了几个"helper"函数(我也创建了这些函数,它们只对这个方法有用并由它使用)。理想情况下,这些方法在类中是"私有"的,但如果我将其保留为全局函数,那么这些实现方法也可以在全局命名空间(或我放置它们的任何命名空间)中访问。
我想正因为如此,也许最好创建一个实用程序类?
class QuotedPrintableHtml
{
private:
void HelperMethod1() const;
void HelperMethod2() const;
std::string html_;
public:
QuotedPrintableHtml( std::string const& html ) : html_(html) {}
std::string Parse() const;
};
也许是这样的?
我不建议创建一个类:实用程序函数不共享某些状态,所以我只创建一个像Utilities
这样的命名空间来收集这些免费函数。您可以将不想共享的所有辅助函数放在cpp文件中的匿名命名空间中。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- c++类声明时,相同的例程,不同的成员变量类型
- C++为线程工作动态地分割例程
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- 在另一个线程中调用luaL_error会引发qWarning
- 子例程,不使用 pow,并带有参数和返回
- 直接在RcppArmadillo中调用LAPACK例程
- C++一个线程如何正确通信其任务已完成?
- 最佳做法是从另一个线程访问 qml 中的Q_PROPERTY
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 如何制作一个只能在一个线程上同时执行的函数?
- 结束另一个线程中使用的对象的生存期
- OpenBLAS 只为一个例程设置线程数
- 给定n个数字,编写一个例程,以在4个连续数字之间找到最大的数字
- 如何编写一个C++例程来检查我在键盘上按下了哪个键,以便我可以单独处理每个按键?
- 如何为一个简单的转换例程设计一个接口
- 奇怪的bug-子例程只运行一个cout
- 有人能确认一下这是否是一个线程安全的单例实现吗?
- 从输入文件的最后一列决定一个例程