Рет қаралды 6,767
Новый ролик из рубрики "Плохой/хороший коД" по просьбам подписчиков;) Разберем на этот раз неудачную реализацию фильтров. Очень распространённая задача для интернет магазинов.
#интернетмагазин#laravel#cutcode
---------------------------------------------------------------------------------
❗️❗️❗️Поддерживайте канал, оформите доступ на моём проекте cutcode! Это очень модно - cutcode.ru/
🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - cutcode.ru/chat-bot
---------------------------------------------------------------------------------
⏰ Таймкоды:
00:00 Введение
01:34 Обзор проекта
03:28 Что выполнено
04:39 Обзор app.php, сервис провайдера и фильтров
08:48 RangeFilter
09:28 Как добавлять новые фильтры
10:22 Фильтр с датой
11:37 Аргумент values
12:22 Тестирование
12:40 Подведение итогов
Всех приветствую на канале Cutcode! Мы продолжаем рубрику плохой хороший код.
Я заметил по недавнему опросу в сообществе, что это одна из наиболее интересных вам рубрик и как раз недавно мне попал проект в руки на код review . Проект с реализацией фильтров подобно тем что мы часто видим в интернет магазине. Сам проект простой, скажем так mvp на данном этапе реализуется с целью протестировать будет ли он иметь спрос на рынке. У меня же стояла задача провести небольшое code review и доработать немного логику фильтров. Но то что я увидел меня серьезно смутило и в дальнейшем я набросал свою реализацию. Ну а сейчас продемонстрирую вам как было на мой взгляд плохой код и как стало - хорошей гибкий расширяемый и легко тестируемый код. Немного отходя от темы могу сказать что заказчик крайне ограничивает во времени и просто спешит получить хотя бы какой-то рабочий продукт поэтому не стоит винить предыдущего разработчика в отсутствии рефакторинга иногда обстоятельства скажем так не позволяют. Но я же категорично отношусь к таким моментам и избегаю работу в коде с явным запашком, который в целом не так сложно исправить. А если нет, то проблемы будут наслаиваться и со временем ударят огромным комом. Ладно давайте взглянем о чем речь - погнали!
Визуально - как я уже говорил проект без дизайна. Frontend накидал разработчик - здесь мы имеем проект скажем так фриланс биржа среди психотерапевтов и на странице поиска присутствуют фильтры с большим набором критериев. Давайте взглянем чтобы понимать что мы будем обсуждать. Вот такой набор фильтров многие из них похожи по принципу работы, но на уровне запросов к базе имеют и расхождения в условиях. А теперь давайте взглянем на первоначальный код реализации.
На главной странице у нас все хорошо есть выборка всех необходимых психотерапевтов с пагинаций, а сама магия фильтрации уходит в scope filtr и это отличное решение. Но давайте взглянем на сам scope. Мы с вами только что видели что на проекте огромное количество различных фильтров и процесс реализации запросов к базе выглядит вот так - просто полотно условий, где что не разобрать. Большое количество дублей одних и тех же условий. Заказчик планирует расширять фильтры, добавлять новые, усложнять как визуальную часть так и часть логики и работать с тем что есть сейчас согласитесь мягко говоря неприятно. А тестировать так вообще боль. Ну и давайте также взглянем на фронт-энд часть вывода фильтров.
Ну друзья я честно говоря если на backend еще можно закрыть глаза и скрипя зубами работать, то фронт-энд совсем боль здесь дубли кода даже не вынесены в отдельные файлы и такой простой механизм казалось бы у нас оброс давайте посмотрим - практически на 1000 строк кода. Думаю тут даже не стоит что-то комментировать.
---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:
• Подход реализации филь...
🔔 подпишитесь на KZbin-канал: kzbin.info?s...
📼 Курс по Laravel с нуля:
• Курс по Laravel 8 обуч...
Подход реализации фильтров для интернет магазина на ларавел
---------------------------------------------------------------------------------
🔗 наш сайт: cutcode.ru/
📷 наш instagram: / cutcoderu
📱 Наш telegram-канал: t.me/laravel_cutcode