我的C ++项目中有一些静态数据类似于:
static const int kCount = 10000;
static int data[kCount];
我也有一些方法可以控制对这些数据的访问。例如:
// returns count of occurences of n in data
static int getCount(int n);
在这种情况下使用正确的代码架构是什么?
我目前正在使用命名空间(getCount不是静态的),但我猜测一个更有经验的C ++程序员可能会想出更好的设计。我考虑过使用所有静态方法的类。但是,在做了一些研究之后,听起来像命名空间是首选方式。
另一个细节:对data
进行操作的一些方法应该与委托对象进行通信。我目前正在使用包含一些纯虚函数的IMyData
之类的东西。然后我有static IMyData *delegate
。
答案 0 :(得分:1)
如果你不考虑Mocking,那么只需使用命名空间来保存这些功能。 E.g。
namespace DataCounter {
const int kCount = 10000;
int data[kCount];
// returns count of occurences of n in data
int getCount(int n);
};
然后你可以调用像DataCounter::getCount()
这样的函数。
如果您希望其他组件使代码更易于测试,请将IMyData
视为接口,将其实现为TMyData
,然后通过IMyDataMock
模拟它(例如gmock)。