Как стать автором
Обновить

Чему могут научить пул реквесты в чужие проекты

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.1K

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

Гит система

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

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

Очевидно, вклад в чужой репозиторий требует прочтения чужого кода, что само по себе учит новому. Подход к написанию, объявление полей и свойств, применение атрибутов, событий, делегатов, пространств имен, 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. Если неукоснительно следовать принципу Брабары Лисков (если в функцию вместо базового класса подставить наследника, то логика не должна быть нарушена; наследники не меняют поведение предков), то можно сказать, что виртуальные методы вам строго запрещены. Конечно это не так.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итог

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

Теги:
Хабы:
Всего голосов 14: ↑6 и ↓8+3
Комментарии5

Публикации

Истории

Работа

Ближайшие события