Минута занудства: Fluent Interface - чисто "рюшечный" инструмент, дающий возможность "красиво" сетапить объект. SetBaseDamage получился декорирующим методом, который добавляет этап валидации перед присваиванием и обрабатывает доп параметры (в лице конфига), т.е. реализует доп логику. Это демонстрация использования Method Chaining, но не Fluent Interface, который решает не эти проблемы. Это сродни разговорам о том, что Di-контейнеры нужны для реализации синглтонов.
@MinerProfessional
Жыл бұрын
Безумно жаль, что охваты такие маленькие, хотя не сказал бы что контент прям узкоспециализированный. Огромное тебе спасибо за такую кладезь знаний! Думаю с информацией, которую ты уже предоставил на канале, можно спокойно в джуны+ идти. Желаю скорейшего роста аудитории и притока неугасающей мотивации!
@gamedevlavka
Жыл бұрын
Спасибо) Все ещё впереди)
@radari7180
10 күн бұрын
Weapon oleg☠️
@hero_9725
Жыл бұрын
Чекаю ще відео
@zloybivshiy7236
Жыл бұрын
Спс за видос
@sofarsky4107
Жыл бұрын
Дуже цікаво!
@finimensniper3322
Жыл бұрын
Этот паттерн очень похож на Builder по синтаксису хоть они и для разных задач
@gamedevlavka
Жыл бұрын
И немного по-разному работают
@005Racot500
Жыл бұрын
Юнити тут только для галочки. Можно просто в консоль апликешн делать и ничего не поменяется. Приплел и все. Еще хорошо бы упомнуть DOTween. Он весь на цепочках.
@dmytromahas9207
Жыл бұрын
Свойство урона не должно быть в классе оружия ? По мне так оно должно отвечать за урон, перезарядку и тд.
@gamedevlavka
Жыл бұрын
Это вообще не важно в данном видео, это во-первых. А во-вторых, свойство урона может определять класс юнита, может оружие, может набор абилок, а может все подряд. Отталкивайся от требований и делай, как тебе удобно, это лишь пример паттерна
@salaniviswan482
Жыл бұрын
Ви зараз у Джорджії?
@FVA322
Жыл бұрын
Не понял.. .в итоге пересмотрел два раза и все равно не понял) нужно прост сделать в static классе метод public static ToDo (this object , var enithing); и оно как-то там подтянится куда нужно?
@gamedevlavka
Жыл бұрын
Для того, чтобы понять, как работает Extensions, посмотри отдельное видео на канале, ссылка в описании. Тебе не понятна именно работа расширений
@СветозарБоголюбов
Жыл бұрын
Это конструкция языка C#, способ добавлять методы к уже существующим классам, даже чужим, к которым у тебя нет, например, доступа. Ты как бы "оборачиваешь" сторонний класс расширением, расширяющим методом и можешь потом обращаться к нему как к родному методу класса через "."
@FVA322
Жыл бұрын
@@gamedevlavka Спасибо! Проучился в техникуме 4 кода, потом на бакалавра 4 года, потом курсы джуна на юнити и теперь смотрю у челиков на ютубыче как екстенгалс делать... Присвятые ГОФ спасибо, что ты есть....
@netyloft3277
Жыл бұрын
А в чем отличие от Builder?
@gamedevlavka
Жыл бұрын
Расскажу в следующем видео
@myownchannellol
Жыл бұрын
Builder - порождающий паттерн, который служит для создания объектов. Там конфигурируются параметры будущего объекта, который билдер породит. Здесь же происходит прямое взаимодействие с уже существующим объектом.
@evgenyevgexa5500
Жыл бұрын
Не первый раз вижу подобный подход в туториалах, цепочки, билдеры и т.п. Но на практике суть данного подхода теряется в ScriptableObject'ах и префабах. Всё можно сделать конфигурируемым и структуру юнитов, оружия уже в редакторе задаст геймдиз через компоненты, скриптаблы и т.п. Из-за того что разные аспекты берут на себя разные компоненты, получается необходимость где то сбилдить в коде структуру юнита/пушки отпадает. Мб просто тут выбран не лучший пример для такого подхода. Но это чисто моё мнение)
@myownchannellol
Жыл бұрын
Издержки примера. Ранее уже упоминали DOTween и LINQ - хорошие примеры использования, где без Fluent-дизайна всё было бы менее лаконично.
@arnaudesalmons886
Жыл бұрын
Як тобі живеться у грузії?
@catssaga7208
Жыл бұрын
Чому ти поїхав у грузію?
@gamedevlavka
Жыл бұрын
Мне не нравилось, куда страна идет в политическом плане. Я уехал в 2021 году
@سماحبصاره
Жыл бұрын
Автор розкажи про інші патерни.
@MK-fs4bq
Жыл бұрын
Андрій Євгенович, вам в університеті неякісну освіту дали. Не вводьте в оману підписників своїм невіглаством. Припиняй видаляти коментарі і банити. 😏
@gamedevlavka
Жыл бұрын
Не конструктивно и скучно
@Daniel48476
Жыл бұрын
Интересно! Благодарю!
@sofarsky4107
Жыл бұрын
Ви зараз у Джорджії?
@salaniviswan482
Жыл бұрын
Чекаю ще відео
@hero_9725
Жыл бұрын
Автор розкажи про інші патерни.
@hero_9725
Жыл бұрын
Дякую за контент!
@arnaudesalmons886
Жыл бұрын
Дякую за контент!
@MaximKarabaev
Жыл бұрын
В контексте, в котором автор предлагает использовать Fluent Builder, не стоит его использовать. Надежнее инициализировать все свойства через конструктор и сделать их get only, или через инициализатор и сделать свойства init only
@gamedevlavka
Жыл бұрын
Согласен, наверное, стоило упомянуть это явно. Это всего лишь пример, не стоит придираться к кейсу, я ведь показываю принцип
@sarge14
Жыл бұрын
так не проще? public struct Health { [SerializeField] private float cur; [SerializeField] private float max; [SerializeField] public bool IsDead => Cur cur; set => cur = math.clamp(value, 0f, max); } public float Max { get => max; set => max = math.clamp(value, 0f, 99999f); } } var health = new Health { Cur = _healthMax, Max = _healthMax });
@gamedevlavka
Жыл бұрын
В этом случае модель знает пограничные значения. Если это ок по требованиям, то никто не запрещает использовать сеттеры, пользуйтесь на здоровье)
@سماحبصاره
Жыл бұрын
Дуже цікаво!
@aleksey8405
Жыл бұрын
Было бы классно, если бы в начале каждого видео автор говорил - какую конкретно задачу мы сейчас решим, используя данный функционал. Так было бы гораздо полезнее! И в целом, в любом деле - всегда сначала определяется задача, а потом для её решения подбираются инструменты. И любой хороший туториал всегда начинается с описания задачи или проблемы. А затем - нам показывается решение, в частности - в виде какого-то паттерна проектирования. Потому что сейчас - я смотрю видео, всё вроде бы понятно, логично, но я не понимаю, как мне это может пригодиться. И я уже начинаю придумывать задачу, которую этот паттерн мог бы решить. А в это в корне неверные подход к проектированию. Но в любом случае, спасибо за контент!
Пікірлер: 43