Code review в TypeScript: что проверять и как давать обратную связь

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: зачем нужен code review в TypeScript

Code review (ревью кода) — это процесс проверки написанного кода другими разработчиками. Для начинающих TypeScript-разработчиков это не просто формальность, а мощный инструмент обучения. Правильное ревью помогает выявлять ошибки на ранних этапах, улучшать архитектуру и поддерживать единый стиль в команде.

В этой статье мы разберем, на что конкретно обращать внимание при code review в TypeScript, как давать обратную связь, чтобы она была полезной, и приведем примеры кода. Материал ориентирован на новичков, которые только начинают работать с TypeScript и хотят прокачать навыки ревью.

1. Типизация: основа TypeScript

Первое, что нужно проверять в TypeScript — корректность типов. TypeScript добавляет статическую типизацию, что снижает количество багов, но только если типы используются правильно.

Что проверять:

  • Явные типы для параметров и возвращаемых значений. Избегайте any везде, где это возможно.
  • Использование интерфейсов и типов вместо примитивов для сложных структур.
  • Правильное использование Union и Intersection типов.
  • Отсутствие лишних приведений типов (type assertions).
// Плохо: неявный тип и any
function processData(data: any) {
  return data.name;
}

// Хорошо: явный интерфейс
interface User {
  name: string;
  age: number;
}

function processData(data: User): string {
  return data.name;
}

При ревью обращайте внимание на места, где тип any мог бы быть заменен на более конкретный. Это сразу повышает читаемость и безопасность кода.

2. Проверка на null и undefined

TypeScript помогает избежать ошибок с null и undefined через strict null checks. Но разработчики часто забывают обрабатывать опциональные значения.

Что проверять:

  • Использование ? для опциональных свойств и параметров.
  • Проверку на null перед доступом к свойствам.
  • Использование операторов ?? и ?..
// Плохо: нет защиты от undefined
function getLength(str: string | undefined): number {
  return str.length; // Ошибка: str может быть undefined
}

// Хорошо: используем optional chaining и nullish coalescing
function getLength(str: string | undefined): number {
  return str?.length ?? 0;
}

В code review проверяйте, что все потенциально пустые значения обработаны. Это частая причина багов в продакшене.

3. Чистота кода и читаемость

TypeScript — это надстройка над JavaScript, поэтому принципы чистого кода остаются актуальными. Хороший code review включает проверку стиля и структуры.

Что проверять:

  • Именование переменных и функций. Имена должны быть осмысленными.
  • Длина функций. Если функция делает больше одного дела — разбивайте.
  • Комментарии. Они должны объяснять «почему», а не «что».
  • Отсутствие магических чисел. Выносите константы в отдельные переменные.
// Плохо: магические числа и неясное имя
function calc(a: number) {
  return a * 1.2;
}

// Хорошо: константа и понятное имя
const TAX_RATE = 0.2;

function calculateTotalWithTax(amount: number): number {
  return amount * (1 + TAX_RATE);
}

При ревью задавайте вопрос: «Сможет ли новый разработчик понять этот код без пояснений?» Если нет — просите улучшить.

4. Как давать обратную связь: мягко и конструктивно

Code review — это не экзамен, а диалог. Для начинающих особенно важно получать обратную связь без критики личности. Вот несколько правил, которые помогут давать полезные комментарии.

Правила хорошего ревью:

  • Начинайте с позитива. Отметьте, что сделано хорошо.
  • Формулируйте как предложения, а не как приказы. Вместо «Исправь это» — «Что если мы вынесем это в отдельную функцию?»
  • Объясняйте причину. Не просто «Тип неверный», а «Использование any может привести к ошибкам, давай заменим на конкретный интерфейс».
  • Используйте вопросы. «Почему ты выбрал этот подход?» — это помогает автору самому прийти к правильному решению.
  • Не исправляйте всё сразу. Если код работает и безопасен, можно пропустить мелкие стилистические замечания.
// Пример комментария в code review (плохо)
// "Убери any, это плохо"

// Пример комментария (хорошо)
// "Я вижу, что здесь используется any. 
// Можем ли мы заменить его на интерфейс User? 
// Это сделает код более предсказуемым и безопасным."

5. Проверка асинхронности и обработки ошибок

Современный TypeScript активно использует асинхронный код. При ревью важно убедиться, что ошибки обрабатываются корректно, а промисы не «забыты».

Что проверять:

  • Все async функции должны иметь await для промисов.
  • Обработка ошибок через try/catch или .catch().
  • Отсутствие «висячих» промисов без обработки.
// Плохо: нет обработки ошибок
async function fetchUser(id: number) {
  const response = await fetch(`/api/users/${id}`);
  return response.json();
}

// Хорошо: обработка ошибок
async function fetchUser(id: number): Promise<User | null> {
  try {
    const response = await fetch(`/api/users/${id}`);
    if (!response.ok) throw new Error('User not found');
    return await response.json();
  } catch (error) {
    console.error('Failed to fetch user:', error);
    return null;
  }
}

При code review проверяйте, что все возможные сценарии ошибок учтены. Это особенно важно для начинающих, которые могут забыть про try/catch.

З

Блоги

Рекомендаций по книгам