Porto: Архитектурный шаблон [ Базовые концепции ] ► Порто №1

Поділитися
Вставка
  • Опубліковано 20 січ 2025

КОМЕНТАРІ • 43

  • @DmitryAfanasyev
    @DmitryAfanasyev  4 роки тому +6

    Махмуд одобряет!
    twitter.com/Mahmoud_Zalt/status/1347260555069894667

  • @НиколайТимофеев-у2е

    Спасибо за Ваш труд. Я студент, если более точно, то филолог-магистрант, который давно использует php в качестве хобби на локальном сервере (как могу разбираюсь), мне очень сложно понимать суть некоторых программных решений, но Ваши видео мне очень нравятся, так как они понятны.

  • @nickfist9187
    @nickfist9187 4 роки тому +19

    Жду новых видео больше, чем новую серию Мандалорца.

  • @dzhinamarina962
    @dzhinamarina962 4 роки тому +11

    "Все мы когда-то были начинающими специалистами, а говнокодером может быть даже и сеньйор-помидор , и тимЛид , и техЛид и херЛид" сильно сказано)

  • @ДмитрийЖунёв-я7г
    @ДмитрийЖунёв-я7г 3 роки тому +2

    Про техлидов соглашусь, встречал говнокод техлидов))) Но потом совместными усилиями перерабатывали и всё становилось нормально. Главное признать свой код, расти дальше, и писать более качественно, чего всем желаю!)

  • @Slavec5
    @Slavec5 4 роки тому +5

    Спасибо за видос, очень жду примеры кода) Параллельно смотрю офф документацию по Порто,

  • @TheRedesc
    @TheRedesc 4 роки тому

    Не даст уснуть, в Сибири уже третий час. Пришлось смотреть. Лайк!

  • @Котики-с8м
    @Котики-с8м 2 роки тому

    блин) приятно увидеть "родного" человека

  • @КосмоЁжик-е7т
    @КосмоЁжик-е7т 2 роки тому

    Благодарю

  • @Ian-t2f
    @Ian-t2f 3 роки тому

    Прикольно!

  • @ЭдуардЕвдокимов-й1о

    ухх. слюнки текут. с нетерпением жду видосы по порто. очень интересно.

  • @alexbendler943
    @alexbendler943 3 роки тому

    Спасиб!

  • @artemgiant
    @artemgiant 4 роки тому

    Спасибо, буду ждать новый видео)))

  • @AlexandrNep
    @AlexandrNep 4 роки тому

    Сразу ставлю лайк, не глядя.)

    • @AlexandrNep
      @AlexandrNep 4 роки тому

      Прошло 2 месяца и я наконец-то посмотрел это видео. Как всегда на высшем уровне! Жаль второй раз нельзя лайк поставить)

    • @DmitryAfanasyev
      @DmitryAfanasyev  4 роки тому +1

      Благодарю!

  • @ihorhnatchuk5818
    @ihorhnatchuk5818 4 роки тому +3

    Очень хороший подход в изложении материала. Пересмотрел ваши все уроки. У меня сейчас возник вопрос пакет для Laravel github.com/nWidart/laravel-modules реализовал тоже Porto, или так по другому все реализовано? Я просто свой проект переписал на nWidart/laravel-modules. Пока не понятно правильно я сделал выбор. Жду след ваших уроков.

  • @МихаилКрамер-н7ш
    @МихаилКрамер-н7ш 3 роки тому +1

    Просмотрел весь курс, интересно. Внезапно пришла мысль, и решил задать вопрос. А куда в этой архитектуре кладуться вспомогательные классы? Или куда их кладёте конкретно Вы? Я имею в виду, например, классы, реализующие паттерн "Стратегия", "Команда" и проч.

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому

      Следуя заветам "кричащей" архитектуры - именуем правильно папки в зависимости от того классы каких логик будут в них находиться. И помним что не каждая логика должна выделяться в таск или сабЭкшон.

  • @НиколайКвасов-п5и
    @НиколайКвасов-п5и 4 роки тому

    Ещё видео, про порто, пожалуйста.

  • @darkshaman766
    @darkshaman766 4 роки тому

    весьма любопытный способ разработки ПО

  • @NoNameUkr
    @NoNameUkr 4 роки тому

    видос агонь, сложно найти нормальную инфу про генераторы, не было ли у тебя в планах запилить урок?)

    • @DmitryAfanasyev
      @DmitryAfanasyev  4 роки тому

      Какие генераторы?

    • @NoNameUkr
      @NoNameUkr 4 роки тому

      @@DmitryAfanasyev www.php.net/manual/ru/language.generators.php

  • @ДеняВасилич
    @ДеняВасилич 4 роки тому +3

    Но всё же, почему VSC?

    • @ДеняВасилич
      @ДеняВасилич 4 роки тому

      Красавчик, всегда что-то интересное и подкинешь))

  • @djekil.henryyy
    @djekil.henryyy 4 роки тому +2

    Мда, интересная концепция. Ловлю себя на мысли, что строю свои приложения в похожем ключе. То есть, у меня имеются какие-то глобальные класс, абстракции, хелперы, которые юзают модули. Есть модули, которые предназначены для какого-то одного концептуального действия. Вот только всегда были проблемы с взаимодействием модулей между собой. Если возникает такой момент, что результат работы одного модуля зависит от другого, то просто создаю один большой модуль с общей логикой, в который пихаю два модуля поменьше. Более изящных решений я для себя пока не нашёл. Возможно, эта концепция натолкнёт на новые мысли, либо уже содержит то что нужно

    • @korolisimus
      @korolisimus 4 роки тому +2

      Все решают логичные абстракции. к примеру, начиная от контроллера и заканчивая ответом: request->controller -> service-> action -> subAction -> task -> presenter -> transformer -> response. наделение каждого участника(слоя) смыслом, установление протоколов общения между слоями - рождают общие законы. это все полет мысли в рамках проблем, с которыми сталкивался создатель porto. кстати я уже успел позаимствовать ряд идей из порто и успешно применить)

    • @djekil.henryyy
      @djekil.henryyy 4 роки тому

      @@korolisimus несомненно, абстракции решают. Но на уровне реализацим я постоянно нахожусь перед выбором создать ещё одну абстракцию на глобальном уровне, т.к. с ней уже могут работать два модуля, либо оставить как есть. Ну ладно, не самый удачный пример навёл. Действительно сложно, когда один модуль, как я писал, зависит от результатов работы другого. Условно один модуль может корректно отработать свою бизнес логику если рабочая модель находятся в нужном состоянии, а само это состояние определяет другой, не связанный модуль. И тогда нужно в своём модуле дёргать другой модуль, из-за чего модульность приложения идёт к чёрту. В этом примере можно решить проблему через ивент бас, но это не панацея. Всё, всё-таки, упирается, по-моему, в сложность бизнес логики и всех её процессов

  • @IPWchild
    @IPWchild 4 роки тому +8

    Еще минутка размышлений, опять про коробочки с коробочками с коробочками. Современные тренды подталкивают нас разрабатывать приложения так, чтобы большая часть кода вызывала другой код, и лишь небольшая его часть - решала реальную задачу. И тут я вижу 2 проблемы.
    Первая - как объяснить заказчику, что 2-3-5-10-кратное увеличение времени разработки в угоду эстетике оправдано, его ведь интересует решение бизнес-задачи, а ее любой новичок решит в процедурном стиле гораздо быстрее. Мы-то понимаем, что код надо поддерживать, но заказчику обычно пофиг, он хочет как подешевле. И если так, то приходится либо делать нормально и все время рассказывать заказчику, что задачи на самом деле не так просты, как кажутся, либо делать нормально за бесплатно, либо делать плохо и дешево... Ну а какой тут еще может быть путь?
    Вторая - не существует идеальных задач, которые после десятков вызовов одним кодом другого кода решались бы одной строчкой. Допустим, в проекте есть модель с парой десятков полей, и их пересчет делается одним методом прямо внутри модели. Пересчет не сложный, допустим, на 100 строк. Такой пересчет монолитный - то есть каждое поле гарантированно будет вычислено на основе только что посчитанных других полей. При чтении кода ты эту логику видишь визуально, строка за строкой. И порядок вычисления полей никогда не будет перепутан. Гипотетически такой пересчет можно разбить на пару десятков коротких методов, которые будут считать каждое поле отдельно или несколько полей за 1-10 строк. Вопрос - всегда ли оправдано разбивать. Я считаю, что не всегда. И среди прочего, при чтении кода для меня важно, сколько действий влазит на 1 экран монитора, а чем больше вызовов - тем меньше полезных строк с логикой можно видеть одновременно без прокручивания.
    К чему это все. К тому, что выбор определенной архитектуры и стиля продиктован не только грамотностью специалиста, но и бюджетом заказчика и спецификой решаемых задач и обрабатываемых данных. Я сейчас не оправдываю говнокод всегда и везде, но утверждаю, что иногда его написание может быть осознанным взвешенным решением. Что в принципе уже звучало в прошлом видео)

    • @djekil.henryyy
      @djekil.henryyy 4 роки тому +3

      Про заказчиков с Вами согласен. Но тут всё куда проще чем выбрать как сегодня строить новый модуль для своего приложения, главное чтобы опыт общения с заказчиками был. Я лично смотрю сколько времени готов заказчик давать на проект и на сколько чётко формулирует свои требования - чем больше времени и лучше формулировка, тем больше усилий я вкладываю в сторону качества и поддерживаемости кода
      По поводу дробления кода: нужно дробить тогда, когда в этом есть смысл. К примеру, в том же «Чистом коде» делается упор на читаемость кода (и нами, и другими), сильно раздутые и сложные функции сложно читать, а особенно когда много условных ветвлений (есть утверждение, что ветвления ещё и на производительность негативно влияют). Я считаю что нужно дробить когда много больших вычислений и когда есть дублирование кода внутри функции

  • @ЮрийПлохов-к2в
    @ЮрийПлохов-к2в 4 роки тому

    Фреймворк во фреймворке получается?

    • @DmitryAfanasyev
      @DmitryAfanasyev  4 роки тому +2

      Не совсем... Фреймворк он массу функционала предлагает... А слой корабля ничего из подобного не предлагает.

  • @AnvaRick
    @AnvaRick 4 роки тому

    супер! го код писать!!!!!!

  • @RuslanMavlyanov
    @RuslanMavlyanov Рік тому

    Я херЛид у нас на проекте

  • @ЭъзозХидирбаев-э4ц

    Херлид)))

  • @lexxkrt
    @lexxkrt 2 роки тому

    махмуд и "правильное решение" вызывает когнитивный диссонанс

  • @IPWchild
    @IPWchild 4 роки тому +3

    Не изобретать велосипеды - сомнительное преимущество. Для меня изобретение велосипедов - одна из прелестей профессии, иначе разработчик был бы просто компилятором решений, а весь код выглядел бы как книга, написанная только цитатами из других книг. Тут скорее суть в том, чтобы изобретаемые тобой велосипеды были похожи на другие и понятны тем, кто пытается в них разобраться.
    Кстати, про Апиато пытался найти видосы - а их просто нет. Значит, с внедрением его в готовом виде как минимум стоит повременить и посмотреть, наберет ли он популярность. Иначе мало толку внедрять архитектуру, которую потом продолжатели проекта не захотят соблюдать из-за ее малой распространенности.

  • @dzhukokernri5228
    @dzhukokernri5228 4 роки тому

    Porto = nuxt.js

  • @МихаилКузнецов-э8в

    Для джуов, PORTO - это один из принципов для подхода к реализации проекта - не более. Это не Библия и не Коран. Если вы будете слепо следовать его принципам и законам, то рано или поздно запутаетесь в иерахии классов и тупо файлов на диске. Ну. т.е решать базовые концепции, Вам придётся Вас самим, в своём сознании - без помощи Дмитрия. Я имею в виду, что своей башкой надо прежде всего думать, опираясь на знания старых бородатых людей)))