核心模块有个功能点,一直以来想着将其优化掉(虽然在线上稳定运行了这么多年),要么没时间,要么懒的搞,一拖再拖。期间也想了各种方案,无奈不是很完美,恰好吴老师进群了,随向有着20多年经验的吴老师进行了请教,也跟A总,E总等进行了讨论,慢慢的也有了优化思路,于是用了大概一天的时间,基于这几个大佬的方案,进行了优化。
需求
项目中有这样一个需求,根据一个类别名以及其对应的类型,创建对应的数据结构。需求很简单吧。。。
优化前的版本,先创建一个配置,然后程序启动的时候,加载跟配置,然后根据配置内容进行相应的操作。
配置如下:
config.json
代码语言:javascript复制{
"phone_brand":"string",
"gender":"int"
}
解析如下:
代码语言:javascript复制// parse config.json
if (pare("config.json").failed()) {
return;
}
for (const auto & item : parse.elements()) {
auto name = item.first();
auto type = item.second();
if (type == "string") {
mp[name] = std::make_shared<Session<std::string>>(name);
} else if (type == "int") {
mp[name] = std::make_shared<Session<int>>(name);
}
}
其实,说实话,如果没有洁癖的话,这段代码也不是不可行