设计模式-用于简单静态数据的C++架构
design patterns - C++ architechture for simple static data
我的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
。
如果您不考虑Mocking,那么只需使用名称空间来保存函数。例如
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)。
相关文章:
- 架构决策:返回std::future还是提供回调
- 将 FlatBuffer 对象序列化为 JSON,而不使用其架构文件
- С++ wxWidgets:代码架构,设计原则和模式
- LD:尝试编译项目时找不到架构x86_64符号
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- Mac Snow Leopard 上的 Qt 5.3.2:ld:在架构x86_64 [clang、Objective-C
- Eclipse 可执行架构类型
- 我正在尝试解决英特尔架构并行基础课程中关于 Coursera 的一项作业
- 如何修复架构x86_64的未定义符号,Boost Asio 1.58
- 在Qt5上去静态库:架构的未定义符号x86_64:
- 如何正确实现 ROS2 架构(rclcpp、rcl、rmw)
- 如何使用 clang 和 distcc 在不同架构(例如 Mac/Linux)的从属服务器上编译
- 自动工具的正确 iOS 架构名称?
- 指定 NDK 构建的目标架构
- 在 WSL 上的 VS2017 中调试C++ - 未知的架构错误
- 在跨平台桌面/移动应用程序套件中使用 ZeroMQ 来解决架构问题
- 如何在 conanfile.txt 中设置编译器和架构?
- 提升 ASIO TCP 服务器架构
- 获取英特尔 Kaby Lake 架构上最后一级高速缓存未命中计数的确切代码是什么?
- 如何在 Skylake 架构上最大化 sqrt-heavy loop 的指令级并行性?