Оффтопка


[22.08.2019] ScorpioT1000 док, а что тебе мешает хештейбл или массив сделать?
[22.08.2019] ScorpioT1000 вот там первый коммент рулит кстати
[22.08.2019] GeneralElConsul тогда еще был неопытный очень, но даже тогда понял, что это какая-то херня
[22.08.2019] Doc без какого-либо вмешательства в реальный код
[22.08.2019] GeneralElConsul самое забавное что я видел - это вот habr.com/ru/post/281783
[22.08.2019] Doc так вот если бы языки позволяли нормальные возможности метапрограммирования, то компилятор можно было бы настроить так, чтобы для тестов генерилось свое дерево кода, где нужные функции заменены на моковые
[22.08.2019] Doc да
[22.08.2019] Doc потому что ты по сути поллютишь свой реальный код кучей говна только чтобы его можно было замокать
[22.08.2019] GeneralElConsul вот с твоем скрине Ability это ADT? dg-pic.tk/vidum
[22.08.2019] ScorpioT1000 Геймдев - это же индустрия, направлений хватает
[22.08.2019] Doc проблема с ТДД вообще в целом забавна
[22.08.2019] Doc это термин в основном из функциональных языков, я приведу конкретный пример
[22.08.2019] ScorpioT1000 На самом деле, в геймдеве в негеймплейных частях вполне себе работает и di, и solid
[22.08.2019] GeneralElConsul Doc логически понятно, что такое ADT но в программировании не встречался
[22.08.2019] Doc У меня есть теория что у программистов при поступлении на работу происходит диссонанс, когда оказывается что софт, который им нужно писать принципиально очень прост, а они думали, что это профессия для очень умных. После этого, чтобы самим себе доказать, что они очень умные они начинают придумывать себе хитрые препятствия и ловкие способы их обхода, а препятствия называют умными словами, чтобы когда разговаривали звучало круче.
[22.08.2019] GeneralElConsul в любом случае приходим к тому, что тебе не понравиться знакомство с энтерпрайзом юнити
[22.08.2019] GeneralElConsul претензия то все равно верна, потому что в конечном счете приводит к оверооп, которое тебе не нравиться, а другого способа ты не сделать di не видишь, значит мой аргумент просто сменяется от "di добавлена именно этим оверооп способом" на "они посмели добавлять di в игру ололо", ок
[22.08.2019] GeneralElConsul значит моя посыл "прелесть" в том, что используют tdd и жирную конфигурируемость в играх, потому что как следствие оверооп, а ты говорил что в играх желательно не быть оверооп, но и тдд и связи без di оверооп не настроешь - таким образом выбирай стул
[22.08.2019] Doc DI это просто конфигурация с помощью ссылок на функцию или группу функций. Почему для этого придумали отдельное название - непонятно. В 1980 можно было в С передавать в sort функцию и никому особо не требовалось называть это DI.
[22.08.2019] Msey А что девион говорил по поводу di?
[22.08.2019] ScorpioT1000 только свичами или ифами, но это без возможности расширения, а это не solid и вообще
[22.08.2019] GeneralElConsul ScorpioT1000 пока не разбирался в DI особо - просто при первом взгляде у меня были определенные опасения и их подтвердил старший товарищ (Devion) которого спросил по этому поводу, поэтому решил что это так и есть; к разговору на тему DI не готов
[22.08.2019] ScorpioT1000 предложи другой способ настроить связи в сторонних библиотеках
[22.08.2019] Doc Я видос смотрел какого то юнити разраба, назывался switches are code smell. Я бы у него забрал лицензию на программирование
[22.08.2019] ScorpioT1000 GeneralElConsul, нет, DI был сделан для жирной конфигурируемости и упрощения TDD и в целом юнит-тестирования
[22.08.2019] Msey Если код достаточно громоздкий, то здесь выручает наш любимый полиморфизм с выносом "каждого кейза" в функцию или отдельный файл, как уже упоминалось ниже
[22.08.2019] Msey Если нужна быстрая навигация по функционалу, то имеет место быть
[22.08.2019] Msey Вообще хз что вы к кейзам докопались
[22.08.2019] Doc Внутри кейза компилятор уже знает о каком конкретном подтипе идет речь
[22.08.2019] Doc У меня у всех спеллов есть свои разные данные
[22.08.2019] Doc Почитай что такое ADT или sum types
[22.08.2019] GeneralElConsul не с потолка спрашиваю: реально была такая ситуация как раз в том проекте
[22.08.2019] GeneralElConsul если так, то что делаешь, например, если возникнет сущность B такая же как A только содержащая специфическую дату которую обязательно должна держать - массив там какойнить? будешь включать в этот общий класс и все будут нести этот груз или будешь создавать новый и разные свитчи уже будут в зависимости от типа объекта или как-то по-другому?
[22.08.2019] GeneralElConsul то есть правильно понимаю, что у тебя класс Spell и в нем конкретный энам его SpellType?
[22.08.2019] Doc Естественно такой подход не мешает большие кейзы выносить в отдельные функции или даже файлы