[Разработка веб-сайтов, PHP] Что не так с трейтами?

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

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

Создавать темы news_bot ® написал(а)
21-Дек-2020 16:30


Кажется, стоит просто сказать «трейты» — и начнется холивар. Мы уже случайно начали один пару недель назад. А затем решили разобраться. Что это в большей степени? Способ снизить дублирования кода. Быстрый способ внедрить функциональность. Дефолтная реализация интерфейса. Или древнее зло?
Рассмотрим с примерами — в эту среду вечером на ютубе. А ниже можно ознакомиться с позициями участников трансляции.
Как все будет. Мы устроим что-то близкое к дебатам: серия раундов, оппоненты, модератор. И голосование за приглянувшуюся вам позицию.
Валентин Удальцов (автор канала «Пых») выступит ярым противником трейтов. Роман Пронский (PHP-Дайджест) — ведущим. Ну а остальные ребята будут защищать доброе имя трейтов.

Кирилл Несмеянов, developer advocate в SpiralScout, член программного комитета PHP Russia

— Что не так с трейтами?
— Да всё с ними «так»: это инструмент — применяй правильно. Забивать гвозди микроскопом — много ума не надо. Проблема в тех, кто пытается запихнуть их туда, куда не следует, а потом такие: «Да ну это всё, пойду лучше во фронтенд».
— Почему тебе интересно поговорить об этом?
— Потому что не все понимают, для какого круга задач были придуманы трейты. Почему-то их обычно считают средством физической нарезки классов. Пора это прекращать!
— Сможет ли 2-часовой онлайн заставить тебя поменять свою позицию?
— Нет.

Сергей Жук, тимлид в Skyeng, ведущий подкаста «Между Скобок»

— Что не так с трейтами?
— Как и любой инструмент, трейт должен быть в арсенале разработчика. Но стоит использовать его правильно: например, для шаринга каких-то методов-хелперов между несвязанными классами в библиотеках, где мы хотим дать пользователям возможность расширять функционал без наследования или DI.
Конечно трейты могут стать «leaky». И чтобы не выстрелить себе в ногу, я для себя выделил три правила:
  • Для любого трейта должен быть соответствующий интерфейс.
  • Трейт должен быть полностью самодостаточным: всё, что он использует, должно быть объявлено внутри него самого.
  • Трейты должны быть как можно меньше. В идеале один метод — один трейт.

— Почему тебе интересно поговорить об этом?
— Многие разработчики категорически против этой возможности PHP. Было бы интересно поспорить с ними. Пока для меня это выглядит как: «Я попробовал git rebase -> испортил себе репозиторий -> git rebase зло».
— Сможет ли 2-часовой онлайн заставить тебя поменять свою позицию?
— Да.

Иван Лещев, разработчик в BotHelp.io

— Что не так с трейтами?
— Все ок, просто кто-то не умеет их правильно готовить.
— Почему тебе интересно поговорить об этом?
— Интересно посмотреть на примеры хорошего и плохого дизайна.
— Сможет ли 2-часовой онлайн заставить тебя поменять свою позицию?
— Скорее нет, чем да.

Александр Дубовской, технический директор в Radon, активный участник Drupal-сообщества

— Что не так с трейтами?
— Всё так. Просто это молоток, которым вполне можно и по пальцу ударить.
Холивар тянется как минимум со статьи Энтони Феррара 2011 года Are traits the new eval. Но тогда было мало красивых примеров, за которыми сейчас можно легко сходить в Symfony-компоненты. Тот же LockableTrait жутко удобен и понятен зачем и почему)
— Почему тебе интересно поговорить об этом?
— Любые архитектурные споры — это интересно. Как минимум, услышишь свежие точки зрения и узнаешь, что еще почитать.
— Сможет ли 2-часовой онлайн заставить тебя поменять свою позицию?
— Нет.
p.s.
Никита Попов: Трейты не люблю особо. Я участвую в разработке с PHP 5.5, а их добавили в 5.4. Если бы я тогда был, их бы точно не добавили.

p.p.s. Если есть отличная история, как трейты всех спасли или испортили, пожалуйста, расскажите ее на стриме 23 декабря. И в любом случае — подключайтесь.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_razrabotka_vebsajtov (Разработка веб-сайтов), #_php, #_trait, #_traits, #_trejty (трейты), #_onlajnmitap_po_php (онлайн-митап по php), #_blog_kompanii_skyeng (
Блог компании Skyeng
)
, #_razrabotka_vebsajtov (
Разработка веб-сайтов
)
, #_php
Профиль  ЛС 
Показать сообщения:     

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

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