@itunderhood Ты лучше скажи прямо. Бывает ли геймдев без лютого говнокода? Я вот спрашиваю коришей, говорят, что не бывает. Тогда вопрос, как вы справляетесь? Какие техники есть, чтобы с этим жить? Кодегенерация? Жёсткие кодестайлы чтобы ограничить синтаксис и конструкции?
Это тема для целого треда, но нет, без говнокода не бывает (я не встречал).
Тут множество причин, на самом деле, но основная — сроки. twitter.com/unetwarm/statu…
На стадии препродакшена и прототипирования действительно можно написать красивую архитектуру, прям конфетку.
А потом, когда начинается стадия непосредственной разработки, всё идёт к чёрту.
Почему? У проектов бюджеты не бесконечны, сроки ограничены. А если это мобильная игра, то там очень важно выпускать частые апдейты.
У вас постоянно десятки тикетов, часть из которых на новый функционал, что-то о багах. В итоге вам нужно закрыть как можно больше за меньшее время.
Если поначалу вы даже как-то умудряетесь поддерживать хорошую архитектуру, то постепенно вкорячиваете костыли, обвязываете изолентой. Код превращается в монстра, технический долго растёт.
Шутки-шутками, но картинка полностью описывает ситуацию про "хуяк-хуяк и в продакшн".
Вы не подумайте, большинство это делает не целенаправленно. Кто-то даже умудряет писать тесты, которые покрывают часть базовых вещей.
Но в какой-то момент принципы изолированности настолько нарушаются, что тестировать компоненты отдельно друг от друга становится невозможно.
Да, люди обмазываются DI, в Юнити Зенжектом.
Но достаточно вкорячить какой-то один самопальный синглтон (очень часто это какой-нить GUIManager), который намертво связывает компоненты, что потом за рефакторинг этого дела никто уже не берётся.
А как же код ревью и вот это вот всё? Выделять 15 времени на рефакторинг? Штош
Ну ладно. Нет ревью, нету рефакторинга. Но ты ведь должен сам стараться "писать правильно и красиво"!
Да...но...на проекте вы не один. Задачи обычно распределяются так, чтобы они не пересекались.
В итоге достаточно, чтобы всего один тиммейт слегка наговнякал (этим тиммейтов вполне можете быть именно вы), чтобы попахивал весь проект.
А в будущем при доработках этот след растянется по всему проекту.