我有一个巨大的 switch case,里面有嵌套的 switch case 语句,我想知道是否有人对如何清理有任何想法?
switch (datatype) {
case STR:
{
switch(operation)
{
case EQUALS:
{
/* perform str compare */
}
case NOTEQUALS:
{
}
case LT:
{
}
case GT:
{
}
case GTE:
{
}
case LTE:
{
}
default:
break;
}
break;
}
case VER:
{
switch(operation)
{
case EQUALS:
{
/* perform version compare */
}
case NOTEQUALS:
{
}
case LT:
{
}
case GT:
{
}
case GTE:
{
}
case LTE:
{
}
default:
break;
}
break;
}
case INT:
{
/* same */
}
case FLOAT:
{
/* same */
}
/* ... more types ... */
/* ... .......... ... */
default:
break;
}
最佳答案
如果操作的值是连续的,您可以制作一个函数指针表。事实上,您可以使用单独的函数来制作函数指针的 2D 表来处理每个操作/类型组合。例如
// do some range checking on input params
// invoke the handler
handlers[datatype][operation]();
关于c 关于缩小此功能的想法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1544750/