Небольшое код ревью, тесты и рефакторинг в 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
945
272
2 days ago 00:14:45 1
Как инвестировать с маленькой зарплатой? 3 варианта до 1 000 рублей. Инвестиции для новичков
2 weeks ago 00:18:01 1
Как улучшить кровообращение в ногах и лимфоток нижних конечностей не вставая с постели
3 weeks ago 00:16:05 1
Black Desert BDO: Коротко о Приёме 2024 FEST 10 - летие .
1 month ago 01:01:47 1
Александр Зацепин - о «Маленьком принце», силе музыки, культурном коде и важных песнях в своей жизни
2 months ago 00:55:49 1
Как стать лучшим аниматором в своём городе?
2 months ago 00:02:36 1
Апокалипсис в Европе! Наводнение в Италии под водой города, а потоки воды смывают людей и десятки ма
2 months ago 00:29:16 1
ПОСТНОЕ МЕНЮ из 30 БЛЮД - 30 ПОСТЫХ БЛЮД на КАЖДЫЙ ДЕНЬ! (Завтрак, Обед, Ужин, Выпечка)
2 months ago 01:25:00 1
Это Невероятно! Как Не Пропустись Своё Счастье?! | Путь К Стабильности И Гармонии! Никошо и Нго Ма
2 months ago 00:13:43 1
Типичные задачи junior разработчика в компании | Как работают джуниоры? (мой опыт)
2 months ago 01:02:49 1
Как не разрушить себя в отношениях, а создать счастливую семью?
2 months ago 00:34:07 1
Опасные и вредные яблоки. Не ешь их!
2 months ago 00:41:54 1
👼АНГЕЛ КРЮЧКОМ 🎄 (как связать рождественского ангела, новогоднюю игрушку)
2 months ago 09:28:44 1
Конференция “Наследие“ | Церковь “Посольство Иисуса“, г. Нижний Новгород
2 months ago 01:29:19 4
Шикарные носки с узором “Мелкая шотландская клетка“
2 months ago 00:00:00 1
Праздничный конгресс церквей «Посольство Иисуса» г. Нижний Новгород | Прямая трансляция
2 months ago 00:21:26 1
🍇 Когда и как НАРЕЗАТЬ ЧЕРЕНИ ВИНОГРАДА для укоренения и прививок. Как выбрать, нарезать, проверить
2 months ago 00:07:48 1
Что такое руны на самом деле (+Подарок! внутри видео)
2 months ago 00:10:54 1
Что такое UEFI и BIOS?🤔 КОРОТКО и ЯСНО обо всём!✅
2 months ago 00:50:06 1
Anivar про пустоту души, прошлое и миллионы просмотров / Чай с Жасмин
2 months ago 00:00:00 1
КАК СОХРАНИТЬ ОТНОШЕНИЯ И НЕ РАЗРУШИТЬ СЕБЯ?
2 months ago 00:05:39 7
Мои заметки про подводную охоту на Сахалине
2 months ago 00:36:22 1
Мультивселенная острова Пасхи| Истуканы, птицелюди, петроглифы
2 months ago 00:28:59 1
#УСПЕТЬПОХУДЕТЬ №1 Программа Тренировок для Похудения. Фитнес Дома.
2 months ago 01:03:00 1
Болит спина, комплексная терапия CORDUS / Убираем боль в позвоночнике, метод Cordus + Sacrus