使用TDD重构标签设计与日志消息过滤测试设计
1. 标签设计重构背景与现状
在日志记录系统中,当前存在一个基础的 Tag
类和多个派生标签类。以 LogLevel
和 CacheHit
类为例,它们的代码存在大量重复,主要差异如下:
- 类名 :如 LogLevel
与 CacheHit
。
- 父类命名空间 : LogLevel
处于 MereMemo
命名空间。
- 键字符串 : LogLevel
使用 "log_level"
, CacheHit
使用 "cache_hit"
。
- 值的类型 : LogLevel
使用 std::string
类型的值, CacheHit
使用 bool
类型的值。
这种设计使得开发者在创建新的标签类时需要重复编写大量样板代码,而且为了支持后续的日志过滤功能,还需要对标签类进行更多的代码添加,因此现在是简化设计的好时机。
2. 使用模板类重构标签设计
为了简化标签类的设计,我们引入一个