Java/C++ : possible to have common code for multiple cases in switch?

标签 java c++

我发现自己经常遇到这种情况,想知道是否有 Java 或 C++ 或任何其他语言可以让您在 switch 中执行多个 case 语句通用的代码,但也专门用于个别情况也是如此,例如:

switch(var)
{
   case Preceeding:
   {
       // code executed for both FollowingA and FollowingB
   }
   break;
   case FollowingA:
   {
       // code executed for only FollowingA
   }
   break;
   case FollowingB:
   {
       // code executed for only FollowingB
   }
   break;
}

不必这样做:

switch(var)
{
    case FollowingA:
    case FollowingB:
    {
        // code executed for FollowingA and FollowingB
        switch(var)
        {
            case FollowingA:
            {
                // code executed for FollowingA
            }
            break;
            case FollowingB:
            {
                // code executed for FollowingB
            }
            break;
        }
    }
    break;
}

最佳答案

这实际上取决于您尝试做什么 - 不仅仅是从“您能做到这一点”的角度来看,而且您还必须关心您或其他人稍后必须阅读和理解代码这一事实。

我通常发现,如果有一些事情需要在一个以上的 switch 情况下完成,它应该进入一个函数(大多数编译器会内联这样的代码,如果它足够小,所以没有性能损失).

所以:

 void CommonCode()
 {
    ... 
 }

 switch(var)
 {
    case A:
       CommonCode();
       ... 
       break;
    case B:
       CommonCode();
       ...
       break;
 }

然而,这个问题有很多不同的解决方案,它确实应该遵循“你的代码的含义是什么”来指导你如何解决这个问题。编写清晰的代码是主要目标。如果这不起作用,请设计不同的代码。

关于Java/C++ : possible to have common code for multiple cases in switch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152467/

相关文章:

c++ - 如何使用 ifstream 将任何自定义数据类型写入文件?

c++ - Python SIP 暴露函数

c++ - 由于重新插入设备,如何将 USB HID 句柄测试为无效

java - 在Java中,为什么我不能多次插入一个整数,插入一个整数后无法打印出来,并且不能用导入的库清空数组?

java - Hibernate 无法运行 session

java - Julian Day 与 Date 对象获取当前日期

c++ - POSIX pthread 多次使用同一个线程

c++ - gethostbyname 函数中的 IP 地址顺序

java - primefaces ajax带有监听器,更新和处理属性,监听器方法不执行

java - 为什么我的 JavaCL 只检测到集成显卡?