每次我有一些“实用”方向的功能时,我最终都会想知道哪个选项是最好的。例如,打印消息结构(自己的或外部的)、一些编码/解码代码或只是我正在工作的上下文中的一些有用的转换函数。
我考虑的选项是:
1) 辅助类/结构中的静态函数。
struct helper
{
static bool doSomething(...);
};
2) 非成员函数。
namespace helper
{
bool doSomething(...);
}
3) 静态非成员函数。
namespace helper
{
static bool doSomething(...);
}
在某些情况下,可能需要在“实用程序”中初始化或保持状态,所以我选择选项 1 以避免“全局”状态。但是,如果没有需要保留的状态,我应该选择 2 还是 3?选项2和3之间的实际区别是什么?
有什么重要的考虑因素,有没有首选的方法来解决这个问题?谢谢!