前缀减量与减法
Prefix Decrement vs Subtract
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。
第二个把那个值存回时间里,既然不再用也没关系?
第一个可以使用 --time 或者第二个可以使用 (time - 1f) 结果是一样的?
如果不保存,第一种方法可能会更好。
谢谢。
在 --time
而不是 time--
上使用得很好。你是对的 --time
vs time - 1f
并不重要(从代码的角度来看)如果你不保存 time
的新值但从可读性的角度来看你应该去更详细的一个。话虽如此,您应该始终努力提高可读性(尤其是在性能影响为 0 或可忽略不计的情况下)。您可能会发现 readable/supportable 做一些类似
的事情
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));
}
我的一般经验法则是,如果您在另一个方法的参数传递部分中执行 math/functions,您应该尽可能地减少它,即使这意味着将它分解成更小的私有方法。
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。
第二个把那个值存回时间里,既然不再用也没关系? 第一个可以使用 --time 或者第二个可以使用 (time - 1f) 结果是一样的?
如果不保存,第一种方法可能会更好。
谢谢。
在 --time
而不是 time--
上使用得很好。你是对的 --time
vs time - 1f
并不重要(从代码的角度来看)如果你不保存 time
的新值但从可读性的角度来看你应该去更详细的一个。话虽如此,您应该始终努力提高可读性(尤其是在性能影响为 0 或可忽略不计的情况下)。您可能会发现 readable/supportable 做一些类似
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));
}
我的一般经验法则是,如果您在另一个方法的参数传递部分中执行 math/functions,您应该尽可能地减少它,即使这意味着将它分解成更小的私有方法。