Привет. Гоу разберем почему вам может быть полезно вносить вклад в сообщество программистов. Речь пойдет про запросы на внесение изменений через форк проекта.

Гит система

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

Подчерпнуть новое

Очевидно, вклад в чужой репозиторий требует прочтения чужого кода, что само по себе учит новому. Подход к написанию, объявление полей и свойств, применение атрибутов, событий, делегатов, пространств имен, assembly definition (в проектах Unity); шаблоны проектирования на конкретном примере, вложенные методы, способы инициализации, приемчики старой школы программистов по типу использования адреса ячейки памяти в качестве индексации коллекции… Да просто обнаружить, что лучше в методе Awake() проводить инициализацию игрового объекта (внутренняя работа), а в Start() сделать ту часть работы, которая требует связи с внешним миром (подписаться на событие, подтянуть параметры другого объекта).

// good
public int Health => _health;
[SerializeField] private int _health;

// nice
[field: SerializeField] public int Armor {  get; private set; }

Пример из Unity/C# проекта. Параметр персонажа, такой как здоровье или броня, можно прописать в одну строчку, ограничив доступ к изменениям и не потерять возможность отображения в инспекторе.

Могу порекомендовать посмотреть ролик с фишками C# на эту тему.

Рефакторинг

Раз вы хотите внести изменения в чужой код, значит это… Рефакторинг! Отличный способ попрактиковаться в этом направлении. Приятное с полезным.

  • Видишь повторяющиеся строки кода? Вынеси в отдельный метод.

  • Видишь смешение логики? Извлеки одну логику в отдельный класс.

  • Схожее поведение у разнотипных классов? Вынеси интерфейс.

  • Неразлучно передается много данных? Можно собрать в структуру.

  • Метод принадлежит чужому классу, нелогичное расположение? Перенеси в более очевидное место.

Прежде чем менять чужой код, стоит почитать методы рефакторинга и запахи кода. Бесполезные или неграмотные запросы никому не нужны.

Большой класс
Большой класс

Примечание. Мы же все понимаем, что бездумно следовать всем выше перечисленным примерам не ст��ит? Не все поголовно повторяющиеся строки кода выносятся в отдельный метод.

Пример с принципами SOLID. Если неукоснительно следовать принципу Брабары Лисков (если в функцию вместо базового класса подставить наследника, то логика не должна быть нарушена; наследники не меняют поведение предков), то можно сказать, что виртуальные методы вам строго запрещены. Конечно это не так.

Совершенствование проекта

Конечно же при внесении изменений проект становится лучше.

  • получает новый функционал

  • становится оптимизированным

  • исправляются баги

  • исправляются ошибки нетехнического характера

В том числе благодаря вам!

Я не стал писать этот пункт первым в списке, т.к. хотел прежде всего подчеркнуть полезность запросов для самого автора этих реквестов.

Стиль написания и уважение

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

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

Коммуникация

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

Понравилась статья на тему как правильно делать запросы на принятие изменений, советую. Стоит почитать как авторам запросов, так и ревьюерам.

Итог

Запросы на принятие изменений – мощный способ совершенствоваться, помогать в этом другим. Умение писать грамотный и понятный код, знать тонкости игрового движка и языка программирования, налаживать общение в процессе работы – вот чему можно научиться в процессе. Главное – получайте удовольствие от проделанной работы!