EvolCode
треки/Вайбкодинг с пониманием·03 / 10
5 мин чтения

Привычка ИИ: избыточная защита

ИИ обучен на терабайтах кода, и среди этого кода много паранойи. Поэтому он по умолчанию пишет защитно: оборачивает в try/catch, проверяет на null, валидирует типы. Часть этого нужна. Часть — мусор, замаскированный под профессионализм.

Признак мусора №1: catch без действия

Если в catch только console.error и throw e — это эквивалент отсутствию try/catch. ИИ часто пишет такие блоки «на всякий случай», но они только усложняют чтение.

Признак мусора №2: проверка на null после try

Если функция уже бросает ошибку при отсутствии данных, проверка if (!user) return null — лишняя страховка от того, что не произойдёт.

Признак мусора №3: try/catch на простом методе

String.trim() не бросает ошибку. Math.round() не бросает ошибку. Если ИИ обернул такой вызов в try/catch — это паранойя без основания.

Как решать

Спроси: «какая конкретно ошибка может тут случиться?». Если можешь назвать её — защита нужна. Если ответ «ну, мало ли» — удаляй. «Мало ли» в коде равно «никогда».

примерjavascript
// "Защитный" AI-код. Половина строк — про ошибки, которые невозможны.
async function getUserName(userId) {
  if (!userId) {
    throw new Error('userId is required');
  }
  if (typeof userId !== 'string') {
    throw new Error('userId must be a string');
  }

  let user;
  try {
    user = await db.users.findOne({ id: userId });
  } catch (e) {
    console.error('Database error:', e);
    throw e;
  }

  if (!user) {
    return 'Unknown';
  }

  if (!user.name) {
    return 'Unknown';
  }

  try {
    return user.name.trim();
  } catch (e) {
    console.error('Trim error:', e);
    return 'Unknown';
  }
}

Найди здесь хотя бы 3 проверки, которые можно удалить без потери смысла.

главное
  • 01Если catch не делает ничего полезного — удаляй
  • 02Если ошибка не может произойти — проверка на неё лишняя
  • 03«Мало ли» — не аргумент. Назови конкретную ошибку или удали защиту
проверь себя
01try { ... } catch (e) { console.error(e); throw e; } — что делает этот блок?
02Когда защита от null оправдана?
03Главный вопрос для оценки нужности проверки
следующий урок: Привычка ИИ: лишние абстракции