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

Привычка ИИ: лишние абстракции

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

Правило двух

Если код используется один раз — пиши плоско. Если будет два — выноси в функцию. Если десять — может быть классом или модулем. Заранее абстрагировать «на будущее» — почти всегда промах.

Признаки лишней абстракции

Класс с одним методом и конструктором. Функция, которая только зовёт другую функцию. Файл с одним экспортом, импортированный в одном месте. Иерархия из 3+ уровней для одной операции.

Что вместо

Чистая функция от аргументов к результату. Одна. Без состояния. Если позже понадобится — расширишь. Это называется YAGNI: You Aren't Gonna Need It.

В примере

Три класса для того, чтобы взять имя пользователя и почистить пробелы. Это можно сделать функцией из 3 строк. Каждый класс добавляет файл, импорт и когнитивную нагрузку — и не приносит ничего взамен.

примерjavascript
// AI любит абстракции. Посчитаем — нужны ли они?
class UserNameFormatter {
  constructor(user) { this.user = user; }
  format() { return new NameValidator(this.user.name).validate(); }
}

class NameValidator {
  constructor(name) { this.name = name; }
  validate() {
    if (!this.name) return 'Гость';
    return new NameNormalizer(this.name).normalize();
  }
}

class NameNormalizer {
  constructor(name) { this.name = name; }
  normalize() { return this.name.trim().replace(/\s+/g, ' '); }
}

// Использование:
const formatter = new UserNameFormatter(user);
const displayName = formatter.format();

Перепиши это в одну функцию из 3-4 строк.

главное
  • 01Абстракция оправдана только при втором пользователе
  • 02Класс с одним методом = функция, переодетая в костюм
  • 03YAGNI: не пиши «на будущее», пиши под текущую задачу
проверь себя
01Когда стоит выносить код в класс?
02Что такое YAGNI?
03Класс с одним публичным методом — это обычно
следующий урок: Привычка ИИ: длинные «корпоративные» имена