🔥

Тред #1


@itunderhood Ты лучше скажи прямо. Бывает ли геймдев без лютого говнокода? Я вот спрашиваю коришей, говорят, что не бывает. Тогда вопрос, как вы справляетесь? Какие техники есть, чтобы с этим жить? Кодегенерация? Жёсткие кодестайлы чтобы ограничить синтаксис и конструкции?
Это тема для целого треда, но нет, без говнокода не бывает (я не встречал). Тут множество причин, на самом деле, но основная — сроки. twitter.com/unetwarm/statu…

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

Почему? У проектов бюджеты не бесконечны, сроки ограничены. А если это мобильная игра, то там очень важно выпускать частые апдейты. У вас постоянно десятки тикетов, часть из которых на новый функционал, что-то о багах. В итоге вам нужно закрыть как можно больше за меньшее время.

Если поначалу вы даже как-то умудряетесь поддерживать хорошую архитектуру, то постепенно вкорячиваете костыли, обвязываете изолентой. Код превращается в монстра, технический долго растёт. Шутки-шутками, но картинка полностью описывает ситуацию про "хуяк-хуяк и в продакшн".
notion image

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

Да, люди обмазываются DI, в Юнити Зенжектом. Но достаточно вкорячить какой-то один самопальный синглтон (очень часто это какой-нить GUIManager), который намертво связывает компоненты, что потом за рефакторинг этого дела никто уже не берётся.

А как же код ревью и вот это вот всё? Выделять 15 времени на рефакторинг? Штош
notion image

Ну ладно. Нет ревью, нету рефакторинга. Но ты ведь должен сам стараться "писать правильно и красиво"! Да...но...на проекте вы не один. Задачи обычно распределяются так, чтобы они не пересекались.

В итоге достаточно, чтобы всего один тиммейт слегка наговнякал (этим тиммейтов вполне можете быть именно вы), чтобы попахивал весь проект. А в будущем при доработках этот след растянется по всему проекту.