gpt4 book ai didi

c++ - 在 C++ 中使用嵌套的 switch 语句是不好的做法吗?

转载 作者:行者123 更新时间:2023-11-30 05:30:19 25 4
gpt4 key购买 nike

我一直在类里面从事一个项目,到目前为止我编写的代码运行良好。我的大部分代码使用嵌套的 switch 语句。虽然我打算按现在的方式改变它,但我想知道嵌套的 switch 语句是否通常不受欢迎,以供将来引用。

最佳答案

您可能已经注意到,因为您问过,它们并不是最容易遵循的东西,所以我通常会尽可能避免使用它们。

这并不意味着您不能执行那种控制流 - 诀窍是将案例拆分为它们自己的函数。这可以让某人阅读顶层开关,理解它的分支和发生的事情(因为你当然已经给你的函数起了很好的描述性名称),然后他们可以依次检查每个函数以在需要时了解下一层.

为了避免以前不必要的函数调用成本,您可以将函数标记为内联,以使编译器有效地将函数主体复制到调用位置。

它最终看起来像这个难以置信的通用化和不完整的骨架:

int main() {
int thing;
char second_level_thing;

// various code which produces thing and second_level_thing

switch (thing) {
case 0: do_zero_case(second_level_thing); break;
case 1: do_one_case(); break;
default: do_default_case(); break;
}

// the rest of main
}

inline void do_zero_case(char second_level_thing) {
switch (second_level_thing) {
case 'a': // 0 -> a branch code
// etc...
}
}

// etc...

不要调用您的函数,如do_zero_case!以它的实际作用命名它们。

我要补充一点,如果多个级别正在检查相同的值,那么就会发生一些非常奇怪的事情。

通过使用 OOP 技术(各种形式的虚拟方法调用)、模板、高阶函数等,还有其他可用的控制流。有时,一两个简单的 switch 语句正是您所需要的!

关于c++ - 在 C++ 中使用嵌套的 switch 语句是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36006269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com