Открываем новую рубрику практического рефакторинга. Сегодня у нас разбор кода компонента OAuth 2.0 Server. Сделаем форк репозитория и настроим локальный запуск тестов перед отправкой Pull Request.
Займёмся упрощением кода сервера. Найдём и устраним избыточность интерфейсов. Удалим неиспользуемый код. Увидим неудобство наличия сеттеров в сервисе и рассмотрим способы избавления от них. Избавимся от зависимости от конкретного класса путём внедрения интерфейса. И сделаем интерфейсы компактными.
- 00:00:35 Примут или нет Pull Request
- 00:02:32 Делаем Fork и клонируем
- 00:04:25 Подключение upstream
- 00:07:12 Локальный запуск
- 00:10:12 Рабочая версия PHP
- 00:11:52 Обзор компонента
- 00:16:33 Формирование ответов
- 00:18:51 Неудобство кода с сеттерами
- 00:20:38 Формирование редиректов
- 00:22:16 Избыточность интерфейса
- 00:23:27 Разделение интерфейсов
- 00:25:39 Устройство сервера ресурсов
- 00:29:51 Неиспользуемые параметры
- 00:31:36 Упрощение создания валидатора
- 00:34:39 Скрытая неожиданность
- 00:36:45 Альтернативы промежуточных сеттеров
- 00:39:36 Интерфейс для сеттера
- 00:44:45 Верить ли процентам тестового покрытия
- 00:49:00 Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо!
Очень полезно, спасибо
Спасибо, полезный материал
Дмитрий, подскажите пожалуйста, а почему мы не можем из объекта доставать константу прямым путем, а только через метод геттер? Я от коллег слышал что это правильный подход, но не получил информации от том почему нельзя доставать напрямую.
Здесь стоит разобраться, зачем одному объекту понадобилась чужая константа из другого объекта.
Можете привести пример?
Сказали, что так делать дурно, но я хотел услышать более конкретные аргументы.
Выигрыша по сравнению с вызовом
$branch->getName()
здесь никакого нет.А из неудобств это только добавляет лишнюю мороку с определением константы в интерфейсе и возможные проблемы с подменой значения константы для стаба или мока в юнит-тестах.
Спасибо
было бы здорово запоминать выбранное разрешение и скорость...утомительно каждый раз переключать :-\
00:39 это и есть реализация принципа interface segregation из SOLID. спасибо большое
Или войти через: