Что не так с трейтами?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


Если уже интересно, заглядывайте на тот самый стрим про трейты.

Кажется, стоит просто сказать «трейты» — и начнется холивар. Мы уже случайно начали один пару недель назад. А затем решили разобраться. Что это в большей степени? Способ снизить дублирования кода. Быстрый способ внедрить функциональность. Дефолтная реализация интерфейса. Или древнее зло?

Рассмотрим с примерами — в эту среду вечером на ютубе. А ниже можно ознакомиться с позициями участников трансляции.

Как все будет. Мы устроим что-то близкое к дебатам: серия раундов, оппоненты, модератор. И голосование за приглянувшуюся вам позицию.

Валентин Удальцов (автор канала «Пых») выступит ярым противником трейтов. Роман Пронский (PHP-Дайджест) — ведущим. Ну а остальные ребята будут защищать доброе имя трейтов.


Кирилл Несмеянов, разработчик в 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 декабря. И в любом случае — подключайтесь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Трейты это…

  • 0,0%Зло0
  • 0,0%Не зло0
  • 100,0%Пока не могу определиться1
Источник: https://habr.com/ru/company/skyeng/blog/534152/


Интересные статьи

Интересные статьи

Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Ваш сайт работает на 1С-Битрикс? Каждому клиенту вы даёте собственную скидку или назначаете персональную цену на товар? Со временем в вашей 1С сложилась непростая логика ценообразования и формирования...
Эта статья для тех, кто собирается открыть интернет-магазин, но еще рассматривает варианты и думает по какому пути пойти, заказать разработку магазина в студии, у фрилансера или выбрать облачный серви...
Некоторое время назад мне довелось пройти больше десятка собеседований на позицию php-программиста (битрикс). К удивлению, требования в различных организациях отличаются совсем незначительно и...
С версии 12.0 в Bitrix Framework доступно создание резервных копий в автоматическом режиме. Задание параметров автоматического резервного копирования производится в Административной части на странице ...