繁体   English   中英

优化开关案例代码

[英]optimizing switch case code

我的代码中有下面的switch case。

   switch(condition)
       case 'A' :   
        //Code part A
        break;
       case 'B' :   
        //Code part A
        //Code part B
        break;
       case 'C' :   //Some code
        break;

代码部分A在情况“ A”和情况“ B”中均重复。 我想避免重复代码。

如果我们使用fall,那么我们需要为情况B添加一个if条件。这是避免代码重复的唯一方法吗?

如果顺序不重要,则可以执行以下操作:

switch (condition)
{
    case 'B':
        // Code part B
        // no break
    case 'A':
        // Code part A
        break;
    ...
}

因为您没有调用break所以case 'B'将继续通过case 'A'代码执行。

首先,可以使用switch语句来减少代码重复,但是随后您可以在switch中添加其他情况,这可能会破坏该优化的清晰性。 例如:

   switch(condition)

       case 'A' :   
        // Code part A
        break;

       case 'B' :   
        // Code part A
        // Code part B
        break;

       case 'C' :   
        // Code part C
        break;

       case 'D' :
        // Code part A
        // Code part D
        break;

突然间,当时看起来不错的优化开始变得难以维护,难以阅读且容易出错。

在已经确定存在通用代码之后,我认为最干净的响应是编写函数以执行通用代码并在每种情况下调用。 展望未来,这将继续保持下去。

不幸的是,这是唯一的方法,没有为partA定义函数。

您可以通过从组合case标签内部退出switch来减少嵌套,以使代码看起来更加统一:

switch (someValue) {
    case 'A':
    case 'B':
        // Code part A
        if (someValue == 'A') break;
        // Code part B
        break;
    case 'C':
        break;
}

这使您的A部分和B部分代码具有相同的嵌套级别。

可以在“ //代码部分A”之前执行“ //代码部分B”吗? 如果是这样,您可以对它们重新排序,并使其不存在if条件。

我认为没有其他事情要做,否则。 创建面向对象语言的原因之一是避免了命令式语言中的代码重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM