每当我有一些“实用型”功能时,我总会想知道哪个选项最好。例如,在打印消息结构(自己的或外部的)、一些编码/解码代码或者在我正在处理的上下文中仅使用几个有用的转换函数。
我考虑的选项有:
1)helper类/结构体中的静态函数。
struct helper
{
static bool doSomething(...);
};
2) 非成员函数。
namespace helper
{
bool doSomething(...);
}
3) 静态非成员函数。
namespace helper
{
static bool doSomething(...);
}
在某些情况下,可能需要在“实用程序”中初始化或保持状态,因此我选择选项1以避免“全局”状态。然而,如果没有需要保留的状态,我应该选择选项2还是3?选项2和3之间的实际差异是什么?重要的是考虑什么,并且有一种首选的方法来解决这个问题吗?谢谢!