😘 Не усложняй

Иногда я встречаю кошмарно сложный код по непонятным мне причинам. Человек решил задачу и видно, что оно завелось и он так оставил код. Не ленитесь, отрефакторите перед сдачей. Представьте, что вашим кодом потом будет пользоваться психопат, который любит опрятный и понятный код, он знает что это ваш код и где вы живете.

Все ...сложна, переделывай!

Начнем сразу с примера.

function move(key: number) {
    let x = 0;
    let y = 5;
    if (key === 0) {
        x = 10;
        y = -10;
    }
    if (key === 1) {
        y -= 50;
    }
    return {
        x,
        y,
    };
}

Данный код имеет ряд проблем. И самая главная проблема, что здесь используется let. Вторая, кажется, что несколько if могут выполниться последовательно, но на самом деле это не так. Тертье - это разный способ рабы с переменными, во втором блоке почему-то используется прибавление.

Как это можно переделать? Избавляемся от let и можно вернуть сразу значение. А чтобы сохранить дефолтное поведение создается переменная:

const defaultMove = {
    x: 0,
    y: 5, // gravity
};
function move(move: number) {
    if (key === 0) {
        return {
            x: 10,
            y: 10,
        };
    } else if (key === 1) {
        return {
            ...defaultMove,
            y: defaultMove.y + 50,
        };
    }
    return defaultMove;
}