Детский код: разбор Unity-проекта-победителя

Разберем ошибки проекта, победившего в конкурсе по разработке Unity-игр, и покажем пути улучшения кода. Цель анализа – демонстрация повышения качества кода и принципов проектирования.

Проблемы наименования и структуры кода

Неудачное наименование элементов кода, например, ШкафМенеджер, размывает ответственность объекта. Транслитерация («Шкаф») снижает читаемость. Наименование методов нестандартизовано и не отражает их смысла. Отсутствуют явные параметры и возвращаемые значения. Использование статических полей в статическом классе для представления состояния игры нарушает инкапсуляцию. Метод, предположительно ШкафМенеджер, изменяет статические поля другого класса, затрудняя сопровождение кода.

Проблемы с управлением ресурсами

Все ресурсы игрока оформлены как отдельные классы, что избыточно. Использование статических полей и копирования кода (copy-paste) делает код неэффективным и трудно поддерживаемым. Вместо этого целесообразно использовать условный класс DataSource для хранения всех ресурсов, что позволит избежать дублирования кода и упростит обработку ресурсов. Использование статических полей, особенно новичками, часто приводит к проблемам из-за сложности этого инструмента.

Неявное программирование и доступ к данным

Неявное программирование, где смысл действия определяется по ключу (например, увеличение значения хавка у молока), ухудшает читаемость и сопровождаемость. Явное программирование улучшило бы понимание кода. Частое обращение к полям объектов извне, вместо использования параметров методов, снижает читаемость и затрудняет понимание логики. Необходимо использовать параметры методов для передачи данных и возвращать результаты.

Проблемы с дизайном методов

Метод Сон содержит длинную цепочку условных операторов. Лучше использовать декларативный подход, разделив логику на отдельные методы, каждый из которых отвечает за определенное действие. Это повысит читаемость и упростит изменение/расширение функциональности. Текущая реализация размывает стратегию и реализацию, затрудняя понимание.

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

Что будем искать? Например,программа