C# Unity: Анализ кода: Профи vs. Новичок

Анализируются два решения одной задачи на C# для Unity: одно — опытного программиста, другое — ученика курсов. Анализ демонстрирует различия в подходах к написанию кода, обусловленные опытом и практикой.

Решение программиста (заказ за 500 рублей)

Предыдущий обзор кода вызвал неоднозначную реакцию аудитории: были как позитивные, так и негативные комментарии. Критика касалась чрезмерной резкости оценки кода и недостаточного объяснения некоторых моментов. Детальный анализ занял бы несколько часов, поэтому не все фрагменты кода были разобраны в коротком видео. Код был оценен как «плохой капитально».

Решение ученика (Саша Волков)

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

Анализ кода Саши Волкова

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

Код написан аккуратно, соблюдены общепринятые соглашения по наименованию переменных и стилю. Используется паттерн «публикация-подписка». Положительно оценивается подход с использованием событий, избегающий запросов состояния из UnitSpeaker. Однако, размещение public полей и событий в классе спорно, а длинные выражения лучше вынести в отдельные методы. Логика алгоритма ясна и эффективна. Unit компактен и содержит три состояния. Проверку различных состояний движения юнитов можно было бы реализовать эффективнее, чем с использованием List<T>.Contains.

Решение преподавателя (Алексей)

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

Анализ кода Алексея

Код Алексея характеризуется аккуратностью и стилистической выдержанностью. Удачно выбраны имена полей. Архитектурное решение отличается от решений опытных разработчиков. Необходимо разделить некоторые компоненты для повышения читаемости и удобства сопровождения. Есть недочеты в обработке событий мыши (не pixel-perfect), а также избыточное количество полей и методов. Код функционален, но недостаточно оптимизирован и структурирован.

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

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