scan, split, OCR, prepare for LLM
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SOLID/DRY/KISS/YAGNI Audit

Периодический аудит кода по принципам SOLID, DRY, KISS, YAGNI.

Когда запускать

  • После реализации крупной фичи (>200 строк нового кода)
  • Перед финальным тестированием этапа
  • При рефакторинге
  • Когда файл превышает 300 строк

Категории проверки

YAGNI — код, который не используется

  • Функции/классы без вызовов
  • Импорты без использования
  • Параметры, которые всегда передаются с одним значением
  • Return-значения, которые игнорируются ВСЕМИ вызывающими

DRY — дублирование

  • Идентичные блоки кода в разных файлах (ctrl-c/ctrl-v)
  • Одинаковая логика с разными именами
  • Дублирование _load_env, шаблонов, моделей данных
  • Повторяющиеся импорты внутри функции/модуля

KISS — излишняя сложность

  • Вложенность >3 уровней
  • Функции >40 строк без явной причины
  • Сложная арифметика там, где есть библиотечная функция
  • Типы Any там, где известна структура
  • Magic numbers вместо именованных констант

SRP — смешение ответственности

  • Функция делает ≥3 логически разных действий
  • Модуль импортирует несвязанные библиотеки
  • Класс/функция и генерирует данные, и форматирует, и сохраняет

Связность (Coupling)

  • Глобальные переменные-синглтоны
  • Прямые импорты конкретных реализаций вместо протоколов
  • Жёсткая привязка к путям в ФС (/home/user/...)

Обработка ошибок

  • Нет try/except вокруг внешних вызовов (сеть, диск, API)
  • assert для control flow
  • Строковые срезы без проверки на find() == -1

Процесс

  1. Пройти по всем src/*.py сверху вниз
  2. Для каждого файла отметить проблемы с номером строки
  3. Сгруппировать по категориям
  4. Приоритезировать: bug > DRY > YAGNI > style
  5. Исправлять от высокого приоритета к низкому

Что НЕ является проблемой (не чинить)

  • Ленивые импорты внутри функций (для избежания циклических зависимостей)
  • Синглтоны для тяжёлых объектов (ML-модели, pipeline’ы) — оправдано производительностью
  • Кодогенерация/шаблоны — читаемость важнее «чистоты» строк