/
Вопросы и ответы
/
Вайбкодинг
/

Как использовать ИИ, чтобы разобраться в чужом коде?

Как использовать ИИ, чтобы разобраться в чужом коде?

14 дней назад

Никита Вихров

Ответы

0

Самый частый сценарий в реальной работе — открываешь незнакомый файл на 300 строк и не понимаешь, что происходит. ИИ здесь работает лучше, чем Stack Overflow, потому что отвечает про конкретный код, а не про абстрактный пример.

Допустим, ты наследуешь вот это:

const throttle = (fn, delay) => {
  let lastCall = 0;
  return (...args) => {
    const now = Date.now();
    if (now - lastCall < delay) return;
    lastCall = now;
    return fn(...args);
  };
};

window.addEventListener('scroll', throttle(() => {
  updateStickyHeader();
}, 100));

Три уровня вопросов, которые стоит задавать:

«Объясни, что делает этот код построчно» — получаешь базовое понимание.

«Почему здесь замыкание, а не просто переменная снаружи?» — ИИ объясняет, что lastCall должна быть отдельной для каждого вызова throttle, иначе все обработчики делили бы один счётчик.

«Какие у этого подхода ограничения и как это решается в lodash?» — ИИ расскажет про trailing call, leading call и почему наивный throttle пропускает последнее событие.

После трёх вопросов ты понимаешь код глубже, чем если бы просто читал его полчаса.

Скидывать весь файл и писать «объясни» — плохая идея. ИИ пишет простыню, которую ты не успеваешь прочитать. Лучше изолировать непонятный кусок и задавать конкретные вопросы по нему.

Ещё один приём: попроси ИИ написать тест на функцию, которую не понимаешь. Тест — это документация поведения. Читать тест часто проще, чем читать реализацию:

test('throttle не вызывает fn повторно раньше задержки', () => {
  vi.useFakeTimers();
  const fn = vi.fn();
  const throttled = throttle(fn, 100);

  throttled();
  throttled(); // не должна вызваться
  expect(fn).toHaveBeenCalledTimes(1);

  vi.advanceTimersByTime(100);
  throttled(); // теперь должна
  expect(fn).toHaveBeenCalledTimes(2);
});

После такого теста поведение throttle понятно без чтения реализации.

14 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845