与其使用 if,不如编写一个 'equation' 来提供您想要的结果会更好吗? (在有意义的情况下)

Instead of using if's, would it better to write an 'equation' that gives you the results you want? (in cases where it makes sense)

而不是:

float dotProduct = Vector3.Dot(dir, transform.right);
int front = 0;
int back = 0;

if (dotProduct > 0)
{
    // right
    front = 1;
    back = -1;
}
else if (dotProduct < 0)
{
    // left
    front = -1;
    back = 1;
}

Rotate(front, back, angle);

有类似的东西

float dotProduct = Vector3.Dot(dir, transform.right);
int front = Mathf.Abs(dotProduct) ...;
int back = Mathf.Abs(dotProduct) ...;
Rotate(front, back, angle);

呃,我知道 int front = Mathf.Abs(dotProduct) ...; 不会给我 1 或 -1,但我想你明白我在想什么,而不是使用 if,我会 "funneling" 通过一个会给我 1 或 -1 的等式。

我要么希望你提出有问题的真实例子,要么就不要理会它,除非你想做一些超出 if/else 的事情。您的原始代码很好。但是,它可以用更短的方式编写。那是使用 ternary 运算符。

float dotProduct = Vector3.Dot(dir, transform.right);
int front = dotProduct > 0 ? 1 : -1;
int back = dotProduct < 0 ? 1 : -1;
Rotate(front, back, angle);

您只看到 4 行。几乎每个程序员都知道三元运算符。因此,此新代码不会为您的同行带来任何复杂性。事实上它更干净。