重构我的if语句代码

时间:2010-08-26 07:59:17

标签: refactoring if-statement pseudocode

我一直在搞乱这段代码,试图用不同的方式重新安排它。有没有更简单的方法来写它?

   if x is not Number      ;// if x is string
   {
      if y is not Number      ;// x, y both strings
      {
         Eval(x)
         Eval(y)
         return
      }
      else                    ;// x is string, y is Number
      {
         Eval(x)
         Scale(y)
         return
      }
   }
   else if y is not Number    ;// x is Number, y is string
   {
      Scale(x)
      Eval(y)
      return
   }
   else                       ;// both are numbers
   {
      Scale(x)
      Scale(y)
      return   
   }

2 个答案:

答案 0 :(得分:7)

看起来您想要Eval字符串和Scale个数字。而不是有四个显式案例(将变为八个有三个变量),独立处理xy的每个案例:

if x is Number
    Scale(x)
else
    Eval(x)

if y is Number
    Scale(y)
else
    Eval(y)

或者,更好的是,您可以将Eval / Scale推送到实用程序方法中:

ScaleOrEval(z):
    if z is Number
        Scale(z)
    else
        Eval(z)

...然后使用它......

ScaleOrEval(x)
ScaleOrEval(y)

如果你选择了好的方法名,那么创建一个实用工具方法可以使代码更具可读性,并帮助你避免复制和粘贴重复。

答案 1 :(得分:2)

// First handle x
if x is Number
{
    Scale(x)
}
else
{
    Eval(x)
}

// Then handle y
if y is Number
{
    Scale(y)
}
else
{
    Eval(y)
}

return