[Разработка веб-сайтов, PHP, Symfony, Конференции] Говорим, как структурировать код

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
19-Апр-2021 16:30

Привет! В эту субботу PHP-чат Нижнего Новгорода проведет свой четвертый митап с интерактивной трансляцией. Доклады подготовят Валентин Удальцов из Москвы и Денис Юрьев из Новосибирска — те, кто придут очно, смогут вдоволь наобщаться с ними на афтепати в центре города, те, кто будут смотреть онлайн — задать вопросы текстом или голосом прямо из браузера.Извините, данный ресурс не поддреживается. :( Записаться на митап можно здесь, поставить колокольчик под трансляцией — здесь, а ниже вы найдете небольшое интервью с докладчиками про то, что не вошло в их выступления.Денис Юрьев (тимлид в Skysmart от Skyeng) — расскажет, как упаковать продукт в переменнуюО чем твой доклад?Пару раз я сталкивался с тем, что если два в целом похожих продукта, выросших из одного репозитория, поддерживают разные команды, через полгода это буду уже два совершенно разных проекта. Мне всегда хотелось сделать это иначе. Поэтому когда в Skyeng решили запускать новые предметы — русский, шахматы, физику, обществознание — на базе нашей с командой платформы для изучения математики, я предложил: «А давайте мы своими силами». Поддержка новых репозиториев казалась неинтересным, а с учетом планов на десяток потенциальных проектов — самоубийственным решением. Поэтому мы пошли новой дорогой.
В докладе поделюсь историей в деталях, как мы спланировали архитектуру, на какие «грабли» Symfony наткнулись в процессе — и почему оно у нас вообще получилось. 
На митапе мы будем много говорить о том, как структурировать код. Дай совет самому себе из прошлогочто делать, не делать и к чему это приведет?Пораньше начать изучать практики других языков программирования и даже другие прикладные области. Например, когда-то мне казалось проще оставить бизнес-логику связанной с каналом передачи данных, а громоздкий функционал — проще положить в один сервис на много строк и не разбивать по модулям. Не надо так.Когда я начал смотреть, как происходит разработка на Unity, а там используется паттерн ECS – тут же захотелось и в PHP разбивать код на более мелкие, менее связанные части. Выделив небольшой осмысленный кусочек логики в модуль (отправка сообщения, какая-то конкретная операция над определённым видом данных и т.п.), мы получим возможность переиспользования, комбинирования, даже более простое юнит-тестирование. Расскажи историю, которая не вошла в твой долклад, но будет полезна в контексте твоей темы.Однажды нам надо было запустить проект в сжатые сроки. Какое-то внятное описание бизнес-логики при этом отсутствовало, а область была очень сложной, и мы не входили в целевую аудиторию.Казалось бы, стоило начать писать код, а понимание придет в процессе – но вместо этого мы сели и «на пальцах» начали разбирать очень сложный механизм будущего проекта. Как всё работает от и до, внутри и снаружи. Это было заразительно, появлялись идеи, нам активнее помогали коллеги. К концу третьего дня (а это была значительная часть нашего тогдашнего сжатого срока) у нас на руках было полнейшее понимание, что и как работает. Не написав ни строки кода, мы уже знали, что за чем будет идти, как распараллелить работы, что за сервис мы получим в итоге и что должно поставляться в mvp.
Вместо хаотичных вопросов и непонятных задачек, мы приходили в другие команды с подробным описанием того, что нам нужно, с контрактами и пространством для обсуждения. Приходили сильно заранее, чем если бы дошли до этого, начав писать код «вслепую». 
История закончилась хорошо – запуск состоялся в срок, все получили классный опыт предварительного исследования требований и ведения переговоров «на берегу». С тех пор я стараюсь как можно плотнее понимать бизнес проекта – это делает сильнее и проект, и тебя как профессионала.О чем с тобой еще можно поговорить на митапе?Архитектура проектов, микросервисы, информационная безопасность и почему жонглирование четырьмя шариками – самое неинтересное занятие на свете. Валентин Удальцов (тимлид в Happy Inc., автор канала «Пых») — расскажет, как структурировать код, чтобы не получить большой ком грязиО чем твой доклад?Я сравню подходы package-by-type, package-by-layer, package-by-feature в контексте Agile и поговорю про принципы проектирования пакетов Роберта Мартина. Покажу пример организации модулей в проекте на Symfony, а также инструменты в PHP, которые помогут следить за связанностью модулей и направлением зависимостей.Дай совет самому себе из прошлогочто делать и не делать в разработке?Что делать — помимо SOLID изучать Package Principles. Что не делать — не воспринимать документацию к фреймворкам как образец структурирования кода.Расскажи историю, которая не вошла в твой долклад, но будет поучительна в контексте твоей темы.Очень важно периодически ставить под вопрос привычные практики: в какой-то момент я стал фанатом разбивки кода по слоям, но после нескольких споров в чатах телеграма решил попробовать альтернативный подход, — и только тогда увидел за деревьями лес. О чем с тобой еще можно поговорить на митапе?Про трейты, композицию, статанализ или любой пост из моего канала «Пых».
p.s. А еще мы разыграем на митапе такого замечательного плюшевого слона и другие призы от компаний-партнеров митапа и сообщества. Розыгрыш пройдет только среди участников в офлайне.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_razrabotka_vebsajtov (Разработка веб-сайтов), #_php, #_symfony, #_konferentsii (Конференции), #_php_nn, #_php_mitap (php митап), #_php_nizhnij_novgorod (php нижний новгород), #_symfony_doklad (symfony доклад), #_blog_kompanii_skyeng (
Блог компании Skyeng
)
, #_razrabotka_vebsajtov (
Разработка веб-сайтов
)
, #_php, #_symfony, #_konferentsii (
Конференции
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 17:33
Часовой пояс: UTC + 5