Unity3DSchool: 9 лет ошибок в обучении? Разбор антипримеров

Обучающее видео 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.

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