Обучающее видео Unity3DSchool, обзор которого представлен ниже, само по себе неэффективно. Однако его анализ демонстрирует антипримеры, наглядно показывая, как не следует писать код. Это позволяет эффективно изучить правильный подход.
Unity3DSchool: 9 лет стагнации
Ролик, посвящённый анализу материалов Unity3DSchool — школы разработки игр, продающей курсы по Unity по цене от 500 рублей, — демонстрирует низкое качество кода, остающееся неизменным на протяжении 9 лет существования канала. Это указывает на проблему стагнации, отсутствие профессионального развития и обновления навыков у авторов курса. Низкое качество кода объясняется не некомпетентностью новичков, а недостатком профессионального опыта у создателей обучающих материалов.
Анализ кода: пример с «звёздами для оценки уровня»
Рассмотрим пример из бесплатного видео «Как сделать звёзды для оценки уровня» из курса по разработке платформера. В видео показана система, где количество звёзд зависит от процента прохождения уровня. Графика для видео скачана с Depositphotos, что свидетельствует об отсутствии бюджета даже на лицензионную графику.
Код содержит следующие недостатки:
- Неунифицированные имена переменных: часть полей записана с маленькой, часть — с большой буквы.
- Отсутствие стандартов именования: нарушение общепринятых соглашений.
- Неоптимальное использование публичных методов: избыточное использование публичных методов Unity.
- Неуниверсальная схема перезапуска уровня: использование SceneManager.LoadScene, не подходящее для всех ситуаций.
- Поиск объектов по тегам: вместо использования более эффективных методов, например, событийной модели.
- Нечитаемые условия: сложные, вложенные условия, занимающие несколько строк кода.
- Конкатенация строк: неэффективное и нечитаемое объединение строк внутри метода. Это элементарная ошибка, недопустимая даже для стажёра.
- Прямое программирование: вместо использования более элегантных решений, код содержит много ручной обработки условий.
- Нарушение принципов декларативного программирования: избыточное использование императивного стиля, приводящее к сложному и трудночитаемому коду.
Другие примеры плохого кода
В других видео, например, о создании врага-преследователя, проблемы с кодом аналогичны:
- Использование GetComponentsInChildren: чрезмерная зависимость от порядка дочерних объектов, приводящая к трудноотлаживаемым ошибкам.
- Нарушение принципа единственной ответственности: методы выполняют слишком много функций.
- Нарушение принципа открытости/закрытости: изменения в коде требуют больших усилий.
- Нарушение принципа DRY (Don’t Repeat Yourself): повторение кода.
- Нарушение принципа KISS (Keep It Simple, Stupid): избыточная сложность кода.
- Нарушение принципов SOLID: различные нарушения принципов SOLID, особенно принципа разделения интерфейса.
- Нарушение принципа Закон Деметры: чрезмерная связанность объектов.
- Отсутствие контрактов: отсутствие явного определения зависимостей между объектами.
- Нечитаемый код: использование неясных имён переменных и методов.
Качество кода в обучающих видео Unity3DSchool остаётся низким на протяжении многих лет. Это демонстрирует отсутствие профессионального развития авторов и не позволяет новичкам освоить лучшие практики программирования. Авторы ролика призывают авторов курса улучшить качество своих материалов в соответствии с современными стандартами разработки и предлагают оценить качество кода в более продвинутых курсах Unity3DSchool.