Небольшое код ревью, тесты и рефакторинг в Laravel. Плохой/хороший коД
Сегодня будем смотреть код реального проекта, где я работаю в команде с другими разработчиками. Сделаем код ревью и рефакторинг. Буду делиться с Вами процессом работы
#рефакторинг#laravel#cutcode
---------------------------------------------------------------------------------
❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного -
🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут -
---------------------------------------------------------------------------------
⏰ Таймкоды:
00:00 Введение
00:43 Обзор проекта
04:10 Создание тестов
05:53 Рефакторинг
Всех приветствую на канале Cutcode! Сегодня стартует новая рубрика, которую я назвал хороший плохой код. Будем смотреть на код, который имеет вопросы, серьезные вопросы, либо с небольшим запашком. И рассматривать детально проблемы, а потом буду демонстрировать код после рефакторинга. В общем и плохой и хороший код нас ждет сегодня. Вы обязательно напишите имеет ли это рубрика право на существование, либо предложите свое решение, если увидеть еще проблемы. Все это приветствуется, обязательно с вами обсудим. Но меньше слов друзья - погнали!
На обзоре у нас сегодня реальный проект, работаем в команде и в процессе рефакторинга и code review сразу делюсь с вами. Думаю это заслуживает хотя бы лайка.
Итак у нас класс контроллер, который отвечает за импорт данных из crm. Данные у нас приходят в json формате каждую ночь. Да возможно в целом подход не из лучших, но мы иногда привязаны к обстоятельствам и особенностям ТЗ. Импорт реализовал один из разработчиков моей команды и скажем так у нас живое code review по проблемам которые здесь есть. Сразу скажу что код рабочий импорт работает без ошибок. Но все-таки что же с ним не так? Во-первых что самое странное, это то, что код писался без тестов. Хотя на мой взгляд и я бы пошел именно таким путем, я бы использовал TDD паттерн и начал именно с тестов. Почему? Ну смотрите разработчик явно действовал следующим образом: писал код, а проверял пуля тестовый запрос либо прямо из crm, либо эмулировал через скажем postman в итоге каждый раз при любом изменении отправлял запрос и ждал ошибку, а в случае если ее нет, то смотрел все ли хорошо в базе, все ли там создалось и именно так как нужно. Лично я слишком ленив для такого подхода и определенно сразу бы написал тесты и далее контролировал бы поведение за счет тестов. Видел бы что запрос прошел валидацию, что все записи создались и они имеют правильные значения. Здесь же помимо того что каждый раз нужно самостоятельно все смотреть, но даже при таком подходе ошибиться и не углядеть что-то крайне легко. Это во-первых и это крайне критично. Во-вторых мне не нравится что здесь нет валидации данных и что мы здесь сразу делаем декодирование, хотя можно было бы перенести этот процесс в отдельный класс как раз валидации. В-третьих у нас идет метод апдейт либо create по полю ID. ID у нас явно уникальное поле. Дублей здесь быть не может и мы получается что на каждый город сразу отправляем к базе два запроса на поиск записи и на обновление либо добавление.
---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:
🔔 подпишитесь на YouTube-канал:
📼 Курс по Laravel с нуля:
Небольшое код ревью, тесты и рефакторинг в Laravel. Плохой/хороший коД
---------------------------------------------------------------------------------
🔗 наш сайт:
📷 наш instagram:
📱 Наш telegram-канал:
1 view
921
264
9 months ago 00:17:25 1
Топ-5: Лучшие ноутбуки для работы и учебы (2023) | Рейтинг ноутбуков | Как выбрать ноутбук
9 months ago 00:28:42 1
Выходные на Урале. Южный Урал. Башкирия. Село Кага. Река Белая.
9 months ago 00:35:00 1
НОВИЧКИ ПОПАЛИ В ЗОНУ ОТЧУЖДЕНИЯ! | . RP Unturned
9 months ago 00:43:16 1
Двойная шапка бини с отворотом и магазинной макушкой спицами/ МК
9 months ago 00:29:43 1
Почему транс музыка так популярна в Израиле?
9 months ago 00:48:49 1
Аутентификация и авторизация в проекте с микросервисной архитектурой: стратегии, практический пример
9 months ago 00:32:27 1
Hazardous-Cource 2. Прохождение со всеми секретами #8. Башня, которую мы заслужили.
9 months ago 01:07:26 1
Короткие рассказы А.И. Куприна для итогового сочинения
9 months ago 01:25:31 1
Короткие рассказы А.П. Чехова для итогового сочинения.
9 months ago 00:37:10 1
Практика - всё об ЭКСТАТИКЕ (медитация в танце - ECSTATIC DANCE), практика, меняющая жизнь!
9 months ago 00:15:07 5
🔥Обновили СТАРУЮ двушку в СТАЛИНКЕ! Разместили ВСЕ на кухне 3 кв м! Классные советы в рум туре
9 months ago 00:04:40 1
Мавзолей это история! А историю забывать нельзя! Коротков
9 months ago 00:05:35 1
Очень красивая карликовая цихлида - Пельвикахромис Пульхер
9 months ago 00:09:05 1
Место притяжения. Деревня Микулино Руднянского района
9 months ago 00:14:17 1
Исследование сервоприводов MG90, SG90 : Калибровка, Диапазон и Управление в микросекундах, sweep
9 months ago 00:00:10 34
Короткая история про КСАС
9 months ago 00:25:49 1
Как связать овальное дно для сумки. Овал крючком. Узор галочки. Как связать сумку. Сумка крючком.
9 months ago 00:27:50 1
ПРОГУЛКА С НОСИТЕЛЕМ ЯЗЫКА. ПОНИМАЙ АНГЛИЙСКИЙ НА СЛУХ И ГОВОРИ ПРАВИЛЬНО. УРОКИ АНГЛИЙСКОГО ЯЗЫКА.
9 months ago 00:02:39 1
Женские ювелирные украшения Разбегаются глаза от блеска. Продажа с Алика.
9 months ago 02:22:37 422
Андрей Горновский | “Что делать если ты также мал, как Гедеон“ | 08 октября 2023
9 months ago 00:32:57 1
Кто такие НА САМОМ ДЕЛЕ успешные люди и чему у них можно научиться
9 months ago 00:55:48 1
СЕКРЕТЫ КОСМОСА. Большой документальный фильм
9 months ago 00:03:12 1
Без народа конституцию не поменять! Пикет НОД. Коротков
9 months ago 00:09:41 1
2. Ручная шинковка для овощей, 150 кг/ч. Обзор и тест механической ручной шинковки: шинкуем капусту.