Стратегия чтения AI-кода
Главная ошибка новичка — читать чужой код сверху вниз, как книгу. С AI-кодом это особенно болезненно: ИИ часто пишет 30 строк там, где хватило бы 10, и в этих 30 теряется суть.
Шаг 1: ищи вход и выход
Что вызывается извне? Какие параметры? Что функция возвращает или куда пишет? Это даёт скелет: понятно, ЗАЧЕМ существует код, ещё до того, как вы поняли КАК.
Шаг 2: считай ветви
Сколько if/else, switch, ранних return? Каждая ветвь — отдельная история. Иногда оказывается, что 80% кода работает только на одной ветви, остальное — обработка краёв.
Шаг 3: игнорируй детали первый проход
Имена переменных, конкретные значения констант, форматирование строк — пропускайте. На первом проходе вы строите карту, не дорогу. Детали приходят на втором.
Что заметить в примере
Функция notifyExpiring: вход — нет аргументов (зовётся из планировщика?), выход — { notified: число }. Две основные операции: найти подписки → отправить письмо и пометить. Всё остальное — детали.
// Незнакомый файл. Не читай построчно — найди форму.
import { prisma } from './db';
import { sendEmail } from './mailer';
export async function notifyExpiring() {
const soon = new Date();
soon.setDate(soon.getDate() + 7);
const subs = await prisma.subscription.findMany({
where: { expiresAt: { lte: soon }, notified: false },
include: { user: true },
});
for (const sub of subs) {
await sendEmail({
to: sub.user.email,
subject: 'Подписка скоро закончится',
body: `Привет, ${sub.user.name}. До ${sub.expiresAt.toDateString()} осталось мало.`,
});
await prisma.subscription.update({
where: { id: sub.id },
data: { notified: true },
});
}
return { notified: subs.length };
}Прочитай за 30 секунд: что эта функция делает на верхнем уровне?