Префикс Уменьшение против Вычитания - PullRequest
0 голосов
/ 02 мая 2018
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 голосов
/ 02 мая 2018

Хорошо использовать на --time вместо time--. Вы правы, что --time против 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));
}

Мое общее правило: если вы выполняете математические функции в разделе передачи параметров другого метода, вам следует свести его к минимуму, насколько это возможно, даже если это означает разбивку на более мелкие частные методы.

...