在我目前的项目中,有很多代码使用 case 过多的 switch 语句。
Switch(c)
{
case CASENUMBERONE:
//50-100 lines of code in each code
...
case CASENUMBERTWENTY:
..
}
//thousands of lines of macro definition in another file
#define CASENUMBERONE 1
...
#define CASENUMBERTWENTY 20
...
编程风格似乎不太合理。 如何避免这种情况?
最佳答案
视情况而定。
您可以为每种情况编写一个函数。如果您担心性能,可以将它们内联,但在现实生活中,由于更好的指令缓存一致性,您实际上可能最终会通过使用单独的函数来提高性能。
如果所有可能的整数值都在附近并且非常密集,您可以创建一个跳转表。如果满足某些条件,这就是许多编译器在内部对 switch/case 所做的事情。跳转表是一个函数指针数组,整数是其中的一个索引。显然,您需要进行边界检查和 NULL 检查。
您可以重新设计代码以使用多态性并改为调用虚函数。
关于c++ - 如何避免写 switch-case 太长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4012162/