如何重构这个 if 语句?

How to refactor this if statement?

这是一种重构下面代码的方法吗

var foot = foot.transform.position;
var hand = hand.transform.position;
if (distance > 0.5)
        {
          foot = hand;
          foot.transform.Translate(x , y  0);
        }
        else
        {
          foot.transform.Translate(x , y , 0);
         }

喜欢下面的你

var foot = foot.transform.position;
var hand = hand.transform.position;
distance > 0.5 ? {
          foot = hand,
          foot.transform.Translate(x , y  0)
                 } 
       : foot.transform.Translate(x , y  0);

或更干净的代码/.?

  1. 没有理由在if和else中有相同的代码行,它可以移到那个逻辑控制之后。
  2. 没有理由要 else,因为在我们删除唯一的一行之后,就没有剩下的行了。
  3. 开始,最好有描述性的变量名,并且在重新赋值时语义清晰。
var limb = foot.transform.position;

if (distance > 0.5)
{
    limb = hand.transform.position;
}

limb.transform.Translate(x, y, 0);

也不需要三元运算符。

这可能是一个选项:

var instance = distance > 0.5 ? hand.transform.position : foot.transform.position;
instance.transform.Translate(x, y, 0);

我可能会接受这个:

var foot = foot.transform.position;
var hand = hand.transform.position;
if (distance > 0.5)
{
  foot = hand;
  foot.transform.Translate(x , y  0);
}
else
{
  foot.transform.Translate(x , y , 0);
}

并将其重构为如下所示:

var p = ( distance > 0.5 ? hand : foot ).transform.position ;
p.transform.Translate( x, y, 0 ) ;

因为表达的简洁自有其用处。

你甚至可以把它变成“one-liner”,但它读起来很奇怪:

( distance > 0.5 ? hand : foot ).transform
                                .position
                                .transform
                                .Translate( x, y, 0 )
                                ;

前者读起来更好