Привычка ИИ: лишние абстракции
ИИ любит классы, фабрики и декораторы — потому что в обучающих данных их много. Но абстракция оправдана только когда у неё есть второй пользователь. На один вызов класс не нужен.
Правило двух
Если код используется один раз — пиши плоско. Если будет два — выноси в функцию. Если десять — может быть классом или модулем. Заранее абстрагировать «на будущее» — почти всегда промах.
Признаки лишней абстракции
Класс с одним методом и конструктором. Функция, которая только зовёт другую функцию. Файл с одним экспортом, импортированный в одном месте. Иерархия из 3+ уровней для одной операции.
Что вместо
Чистая функция от аргументов к результату. Одна. Без состояния. Если позже понадобится — расширишь. Это называется YAGNI: You Aren't Gonna Need It.
В примере
Три класса для того, чтобы взять имя пользователя и почистить пробелы. Это можно сделать функцией из 3 строк. Каждый класс добавляет файл, импорт и когнитивную нагрузку — и не приносит ничего взамен.
// 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 строк.