Advanced: Тема повышенной сложности или важная.
Наверное безнадежное начало, но у меня сегодня такое настроение. Начнем такой эпик - буду учить людей как кодить. О, да, тут же у нас все специалисты, но как не откликаюсь на предложения собрать группу, то если даже и получается дойти до реального кода, часто вытекают глаза и просто посылаешь все нах. Поэтому тут разберем самые фейс палмы, не удивляйтесь вы в них наверняка даже верите, это частые ошибки, а кто то даже будет уверен, что это правильно, но мол я в этом ничего не понимаю ... Ок ... проходите мимо, а мы поговорим с адекватными, и теми кто готов слушать ...
Без это вступительного слова - своего рода отказа об ответственности, начинать такие темы нельзя. Ну, вы понимаете ...
Постепенно будет больше, но начну я с простого и обрушу сегодня свой гнев на тех кто ничего не понимает или делает отвратно, когда:
* Настраивание объектов под контекст игры
Для юнити это 3 синонима в названии темы. Со временем я понял, что самый большой грех программиста - это оверхед и создание дополнительных зависимостей (да, да и совсем не призрачная, академическая "чистота кода"). Юнити дает вполне терпимый аппарат для сериализации данных, чтобы вам не думать как хранятся настроенные компоненты(скрипты). Почему вы их не используете, зачем придумываете какие то велосипеды с сериализацией, или используете совершенно говно-либы для этого? Например, odininspector и т.п. бред. Если это так вы расписались в проф. непригодности .. а теперь спорьте ... чтобы вас мне понять , мне надо понять вначале - зачем вам такой гавнокод и зависимости в коде, и не хватает сериализации из коробки?
Возможно, где-то это будут священные-войны, не без этого, главное чтобы обросло мясом - аргументами, детализацией и примерами кода
1. Велосипеды по "сериализации"
2. Крупные ассеты сторонних разработчиков
2.1. Простая реализация "реактивности" без лишних фреймворков
3. не нужное применение паттерна MVC
3.1. 1
3.2. 2
4. Заметка про инкапсуляцию
Темы оппонентов
1. Зачем отделять код (в частности модель (в смысле MVC), состояние, и прочие) от MonoBehaviour?
(резервация)
(резервация)
(резервация)
tac
> Юнити дает вполне терпимый аппарат для сериализации данных, чтобы вам не
> думать как хранятся настроенные компоненты(скрипты). Почему вы их не
> используете, зачем придумываете какие то велосипеды с сериализацией, или
> используете совершенно говно-либы для этого?
Если прочитать мануал Юнити, можно узнать, что:
- Кастомные сериализуемые классы сохраняются как структуры. Т.е. две ссылки на один и тот же объект становятся разными объектами после десериализации
- Не поддерживается Null для кастомных классов. Если сериализуемое поле такого типа имеет значение Null, Юнити автоматически заполнит его новым экземпляром
- Не поддерживается полиморфизм
Если ты компетентный программист, ты легко сможешь представить себе ситуации, в которых эти пункты окажутся серьёзной проблемой.
BooTheJudge
> окажутся серьёзной проблемой
В том то и дело, что серьезной проблемы это не вызывает. А если уж припрет компетентный программист, сможет легко эти легкие моменты обойти. Причем не решая эти проблемы, а считаясь с тем, что он неправильно хочет сериализовать, то что на самом деле сериализовать не нужно.
что ж поехали дальше ... следующая болезнь слабых программистов ..
№2. Использование неких крупных "систем" из юнити ассетов третьих разработчиков
(это могут быть начиная от ИИ-систем, систем диалогов, генерации мира до небольших по сути контроллеров персонажей )
Как правило такие системы имеют кучу настроек и очень много кода, которые вы на 80% никогда не будете использовать. А вам действительно нужно лишь небольшая часть, что этот ассет умеет. Тянуть весь их гавнокод к себе в проект и пытаться, что-то настроить - это плохая затея, через какое то время вас просто накроет "большая вонючая куча". Единственный, правильный подход - пересмотреть код ассета, и сделать реинжиниринг, выделив именно то, что вам надо и переписать так, чтобы вы потом могли делать рефакторинги кода, влив его в "свой". Единственное, исключение - на фазе ознакомления, но если вы решили, что это надо использовать - то только так.
Отсюда правило для написания ассетов: он должен решать лишь одну конкретную задачу, и иметь "адекватное" кол-во классов реализации. Все остальные крупные ассеты умрут, их перестанут поддерживать, а вы не сможете тянуть на себе, то что вам на 80% не нужно.
Тем более не ждите, что эти ассеты написаны с нормальной архитектурой, их зачастую пишут неумехи, не думающие о том, что они дают клиенту. Они все рано или поздно "захотят" вашего рефакторинга. Эти разработчики почему то думают, что их продукт - визуальный интерфейс (UI) к коду, а не сам код.
Итого, если вы вливаетесь в команду, вас должно насторожить какие и как там используются ассеты.
tac
> Причем не решая эти проблемы, а считаясь с тем, что он неправильно хочет
> сериализовать, то что на самом деле сериализовать не нужно.
Тут мне почему-то вспомнились "обзорщики" с ютуба, которые говорили: "Dark Souls 2 не говно, вы все просто неправильно в неё играете!".
Вообще уже второй совет подряд относительно использования (точнее, не использования) чужого кода. Когда уже будут советы по своему коду?
BooTheJudge
> Когда уже будут советы по своему коду?
о, нет, увольте, любезнейший, я лишь буду писать как вредно, как срамно, и как гавняно пишут местные дилетанты ... а все остальное за деньги :)
tac
> разберем самые фейс палмы
Насмотрелся я тут крутых инди проектов и пля.. простите, не удержался.
Инди, это свобода. Свобода от правил кода, свобода в выборе палитры, гаммы или чего бы то ни было. Это свободное выражение своих идей, подходов и механик. Это свобода, которая не подразумевает логику или физику, это полная и совершенная абстракция (в лучшем её виде). Инди, это я, инди, это ты. Будьте проще и всё у вас получится.. бб.
tac
> Юнити дает вполне терпимый аппарат для сериализации данных, чтобы вам не думать
> как хранятся настроенные компоненты(скрипты). Почему вы их не используете,
> зачем придумываете какие то велосипеды с сериализацией
кастую Alprog'a в топик
tac
> о, нет, увольте, любезнейший, я лишь буду писать как вредно, как срамно, и как
> гавняно пишут местные дилетанты ... а все остальное за деньги :)
Не понял ты мой вопрос. Я как раз и имел в виду: покажи уже, что пишут местные дилетанты, мне интересно. Пока ты только написал, что они используют чужие "говнобиблиотеки".
tac
Мсье. Ну тут прямо дело чести ответить на мой вопрос. Он звучит так: Сколько стоит час Вашего ревью?
Тема закрыта.