Prefix Decrement vs Subtract

时间:2018-05-02 14:54:21

标签: c# math tween

public static float ExpoInOut(float from, float to, float time)
{
    if ((time /= .5f) < 1f)
        return Mathf.Lerp(from, to, .5f * Mathf.Pow(2f, 10f * (time - 1f)));
    return Mathf.Lerp(from, to, .5f * (-Mathf.Pow(2f, -10f * --time) + 2f));
}

两种情况的第一步是从时间上减去1。

第二个将该值保存回时间,但由于它不再使用无关紧要? 第一个可以使用 - 时间,或者第二个可以使用(时间 - 1f),结果是一样的吗?

如果不保存,第一种方式甚至可能更好。

感谢。

编辑:来源:http://robertpenner.com/easing/

1 个答案:

答案 0 :(得分:2)

--time而不是time--上使用得很好。你是对的--time vs time - 1f并不重要(从代码的角度来看)如果你没有保存time的新值,但从可读性的角度来看,你应该去用更冗长的一个。话虽如此,你应该始终追求可读性(特别是如果性能影响为0或可忽略不计)。您可能会发现执行

之类的操作更具可读性/可支持性
public static float ExpoInOut(float from, float to, float time)
{
    time /= 0.5f;
    time--; 
    if (time < 0f) 
        return Mathf.Lerp(from, to, .5f * Mathf.Pow(2f, 10f * time)); 
    return Mathf.Lerp(from, to, .5f * (-Mathf.Pow(2f, -10f * time) + 2f));
}

我的一般经验法则是,如果你在另一个方法的参数传递部分中进行数学/函数,你应该尽可能地最小化它,即使这意味着将其分解为更小的私有方法。