如何为一个简单的转换例程设计一个接口

How to design an interface for a simple conversion routine?

本文关键字:一个 例程 接口 转换 简单      更新时间:2023-10-16

我有一个简单的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文件中的匿名命名空间中。