@webe
frontend

Как улучшить код вызова функций?

есть код const result = f0(f1(f2(f3(1000)),1),'test')
Как сделать его более красивым?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 2
AngReload
@AngReload
Кратко о себе
Похоже что тут можно было бы применить функциональные конвейеры из библиотек вроде Underscore, Ramda или что там ещё. Ещё можно сделать транспиляцию с помощью Babel конвейерного оператора, который пока не добрался до стандарта. Работает всё это как-то так:
// где-то в библиотеке
function pipe(...fns) {
  return function (arg) {
    let result = arg;
    for (let i = 0; i < fns.length; i++) {
      result = fns[i](result);
    }
    return result;
  }
}

// в коде
const result = pipe(
  f3,
  f2,
  _ => f1(_, 1),
  _ => f0(_, 'test')
)(1000);

Но я считаю, что код станет более очевидным если его просто разбить на несколько строк:
const result3 = f3(1000)
const result2 = f2(result1)
const result1 = f1(result2, 1)
const result0 = f0(result2, 'test')
Ответ написан
Комментировать
@SANTA2112
Использовать compose
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы