jb

Лишний return в функциях

Стрелочные функции (arrow functions) представляют собой мощный синтаксический инструмент, который обеспечивает более лаконичный и выразительный способ определения функций. Однако разработчики часто применяют избыточные синтаксические конструкции, которые не только увеличивают объем кода, но и снижают его читаемость и элегантность.

Фундаментальное преимущество стрелочных функций заключается в их способности к неявному возврату значений (implicit return) при работе с единственным выражением. Это означает, что функции, содержащие только одно выражение, не требуют использования фигурных скобок {} и ключевого слова return:

// избыточно
const multiply = (a, b) => {
  return a * b;
};

// оптимально
const multiply = (a, b) => a * b;

При работе с асинхронными функциями и Promise-based API разработчики часто создают излишние уровни абстракции, добавляя ненужные await операторы при непосредственном возврате Promise:

// избыточно
const getUser = async (id) => {
  const response = await fetch(`/api/user/${id}`);
  return response;
};

// оптимально
const getUser = (id) => fetch(`/api/user/${id}`);

// избыточно
const fetchUserData = async (userId) => {
  return await getUser(userId);
};

// оптимально
const fetchUserData = (userId) => getUser(userId);

Исключения и особые случаи:

Важно понимать, что упрощение синтаксиса не всегда является оптимальным решением. В случаях, когда функция может быть расширена в будущем или когда явный синтаксис улучшает понимание кода, следует отдавать предпочтение читаемости над краткостью.

Редактировать на GitHub