Привет. Гоу разберем почему вам может быть полезно вносить вклад в сообщество программистов. Речь пойдет про запросы на внесение изменений через форк проекта.
Гит система
Запросы на принятие изменений позволят поближе познакомиться с системой Гит, освоить незнакомый функционал. Запросы на принятие изменений не ограничиваются лишь целью внести вклад в общество: в крупных компаниях запросы – обязательная часть работы, одобрение работы программиста как сотрудника, работающего над проектом совместно с другими.
Подчерпнуть новое
Очевидно, вклад в чужой репозиторий требует прочтения чужого кода, что само по себе учит новому. Подход к написанию, объявление полей и свойств, применение атрибутов, событий, делегатов, пространств имен, 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. Если неукоснительно следовать принципу Брабары Лисков (если в функцию вместо базового класса подставить наследника, то логика не должна быть нарушена; наследники не меняют поведение предков), то можно сказать, что виртуальные методы вам строго запрещены. Конечно это не так.
Совершенствование проекта
Конечно же при внесении изменений проект становится лучше.
-
получает новый функционал
-
становится оптимизированным
-
исправляются баги
-
исправляются ошибки нетехнического характера
В том числе благодаря вам!
Я не стал писать этот пункт первым в списке, т.к. хотел прежде всего подчеркнуть полезность запросов для самого автора этих реквестов.
Стиль написания и уважение
Вклад в сообщество программистов учит уважать чужой стиль написания кода. Твой запрос не одобрят, если вы напишите все по-своему, без учета уже написанного. Уважение чужого труда поможет не только одобрить запрос на вливание, но и позволит более эффективно работать в команде на постоянной работе (или при участии в джемах), будет легче наладить общение с коллегами по цеху.
Например, тут меня ругают за то, что я, помимо прочих изменений, удалил скобки во всех однострочных конструкциях. Это нарушило общий стиль написания.

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

Понравилась статья на тему как правильно делать запросы на принятие изменений, советую. Стоит почитать как авторам запросов, так и ревьюерам.
Итог
Запросы на принятие изменений – мощный способ совершенствоваться, помогать в этом другим. Умение писать грамотный и понятный код, знать тонкости игрового движка и языка программирования, налаживать общение в процессе работы – вот чему можно научиться в процессе. Главное – получайте удовольствие от проделанной работы!
ссылка на оригинал статьи https://habr.com/ru/articles/805503/
Добавить комментарий