C++中多组参数相似输出不同的函数如何简化以提升简洁性与可读性?
你给出的示例代码中三个函数逻辑高度一致,仅输出的固定字符串有区别,最简单的简化方式是将可变的字符串抽为额外入参,合并重复逻辑。
方案1:合并为单个通用函数(最推荐,可读性最高)
直接将差异部分作为参数传入,完全消除重复代码:
#include <iostream> #include <vector> // 新增str参数接收不同的输出字符串 void test(int index, const std::string& str) { std::cout << "Chosen Answer : " << index << std::endl; std::cout << str << " "; } int main() { std::vector<int> input; for(int i=0; i<5; i++){ input.push_back(i); } // 调用时传入对应字符串即可 test(input[1], "ABCD"); test(input[2], "JKLM"); test(input[3], "PQRS"); return 0; }
如果实际场景中差异逻辑不止是输出字符串,还存在其他不同的处理逻辑,也可以用以下两种方案:
方案2:公共逻辑抽为独立函数,差异部分单独实现
把重复的打印Chosen Answer的逻辑单独封装,各个差异函数只实现自己的独特逻辑即可,无需修改原有调用侧代码:
#include <iostream> #include <vector> // 公共逻辑抽离 void print_common(int index) { std::cout << "Chosen Answer : " << index << std::endl; } void test1(int index){ print_common(index); std::cout << "ABCD "; } void test2(int index){ print_common(index); std::cout << "JKLM "; } void test3(int index){ print_common(index); std::cout << "PQRS "; } int main() { std::vector<int> input; for(int i=0; i<5; i++){ input.push_back(i); } test1(input[1]); test2(input[2]); test3(input[3]); return 0; }
方案3:使用配置数组批量处理(适合大量同类逻辑的场景)
如果有大量同类的test规则,可以将参数和对应差异内容存入配置数组,批量执行逻辑进一步精简代码:
#include <iostream> #include <vector> int main() { std::vector<int> input; for(int i=0; i<5; i++){ input.push_back(i); } // 配置数组存储下标偏移和对应输出字符串 const std::vector<std::pair<int, std::string>> config = { {1, "ABCD"}, {2, "JKLM"}, {3, "PQRS"} }; for (const auto& item : config) { std::cout << "Chosen Answer : " << input[item.first] << std::endl; std::cout << item.second << " "; } return 0; }
内容的提问来源于stack exchange,提问作者iamgroot
相关产品推荐
相关产品推荐

