2 c++
在我当前的项目中,有很多代码使用了包含太多案例的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
...
Run Code Online (Sandbox Code Playgroud)
编程风格似乎不合理.怎么避免这个?
Ebo*_*ike 15
要看.
你可以为每个案例编写一个函数.如果您担心性能,可以内联它们,但在现实生活中,由于更好的指令高速缓存一致性,您实际上可能通过使用单独的函数来获得性能提升.
如果所有可能的整数值都接近且非常密集,则可以创建跳转表.如果满足某些条件,这就是许多编译器内部为开关/外壳做的事情.跳转表是一个函数指针数组,整数是它的索引.显然,您需要进行边界检查和NULL检查.
您可以重新设计代码以使用多态并调用虚函数.