Classic Season 4 — это продолжение легендарной серии обучающих разборов кода, где на реальных примерах показываются TDD-подходы, рефакторинг, проектирование и работа с различными технологиями. В этом сезоне вы увидите, как переписывается старое приложение, устраняются накопленные проблемы и создаются устойчивые архитектурные решения.
О чем этот сезон
В четвертой части Classic Season вы шаг за шагом пройдете путь от восстановления старого приложения до построения чистой архитектуры с тестами уровня сервиса, контроллера, интеграции и функционального ядра. Каждая серия — это практическое погружение в инженерные решения, которые можно применять в собственных проектах.
Sucks/Rocks: восстановление и развитие приложения
Sucks/Rocks 1: Переписываем Rails-приложение
Разбираем сломанное приложение и создаем его заново. Используем циклы TDD и принципы проектирования из предыдущих сезонов.
Sucks/Rocks 2: Расчет оценок
Переходим к unit-level TDD: выбор примеров, момент для обобщения и контроль типа возвращаемых данных.
Sucks/Rocks 3: Интеграция поисковой системы
Добавляем Bing как источник данных, тестируем через VCR и сталкиваемся с первой ошибкой в сценарии Cucumber.
Sucks/Rocks 4: Кэширование
Создаем простой Ruby-объект для кэширования результата от RockScore. Rails по‑прежнему не нужен.
Sucks/Rocks 5: Исправление ошибок и добавление модели
Возвращаемся к багу из третьей части, завершаем слой кэша и вводим базу данных через ActiveRecord и схему Rails.
Sucks/Rocks 6: Контроллер
Добавляем минимальный контроллер Rails, который связывает сервисы и старые статические активы. Находим новую ошибку и покрываем тестами.
Sucks/Rocks 7: Больше Cucumber
Автоматизируем ручные проверки контроллера через дополнительные сценарии Cucumber. Находим и исправляем очередной баг.
Sucks/Rocks 8: Целостный дизайн приложения
Запускаем полный стэк тестов и анализируем архитектурные решения. Обсуждаем отказ от sentinels, избегание nil и простоту перехода на новую поисковую систему. Исходники доступны на GitHub.
Git, принципы проектирования и работа с тестами
Pretty Git Logs
Настраиваем красивый формат git log, изучаем полезные CLI-трюки. Пример конфигурации доступен в gitconfig.
Mutation in Tell Don’t Ask
Разбираем принцип "Tell Don’t Ask", разбираем пример запроса и превращаем его в корректный «рассказ», анализируя роль мутаций.
A Magical Isolation Story
Изучаем механизм модулей и имен в Python и создаем упрощенный тестовый инструмент для демонстрации автоматической изоляции.
Ugly Tests Trigger Refactoring
Исследуем, как некрасивые тесты могут подсказать проблемы в архитектуре. На примере Raptor выявляем глубокие стабы, лишние зависимости и исправляем дизайн.
The Mock Obsession Problem
Разбираем ситуацию чрезмерного использования mocks и переписываем тест, делая его более прямым и простым.
Test Driving Shell Scripts
Доказываем, что Bash — полноценный язык: пишем тестируемый сценарий, используя знакомые концепции xUnit.
Conditional Whac-A-Mole
Удаляем условности разными способами и оцениваем влияние на читабельность и сложность кода.
Time to First Request
Создаем скрипт для измерения времени запуска сервиса. Работаем с сокетами, холодным кешем и оверхедом скрипта. Готовый код доступен на GitHub.
Архитектура: от изоляции до функционального ядра
Test Isolation Without Mocks
Делаем два варианта TDD: OO с мутациями и функциональный — через значения. Сравниваем, почему функциональный подход позволяет тестировать без mocks.
Functional Core, Imperative Shell
Строим приложение с четким разделением: функциональное ядро и императивная оболочка. Это упрощает тестирование, сокращает количество условностей и делает состояние системы предсказуемым.
Кому подойдет этот курс
- Разработчикам, которые хотят углубиться в TDD.
- Тем, кто хочет увидеть реальные примеры рефакторинга.
- Rails-разработчикам, изучающим чистую архитектуру.
- Инженерам, интересующимся тестированием, дизайном и функциональным подходом.
Почему стоит посмотреть
Classic Season 4 — это не просто обучающий курс. Это практическое путешествие через ошибки, архитектурные решения и инженерные находки. Вы увидите, как строится дизайн, который выдерживает время, и получите набор инструментов, которые помогут вам писать чище, проще и увереннее.