Признаюсь, лабораторная на этой неделе мне очень понравилась. Участвовать в проектах других людей приносит удовлетворение. В предыдущей лабораторной работе, где мы публиковали проблемы, я не мог не чувствовать, что просто указывал на ошибки, не предлагая решения. Хотя я понимаю, что это необходимая часть разработки программного обеспечения, я предпочитаю также решать проблемы. Было немного странно не спрашивать разрешения. Я чувствовал себя немного как злоумышленник в начале. Но когда мой запрос на извлечение был объединен, это было здорово. Даже в таком маленьком проекте мне казалось, что я немного изменил ситуацию.

В лаборатории на этой неделе мы добавили новые функции в проект однокурсника. Я выбрал Проект Мо, который был написан на Python и использовал похожие библиотеки. Было интересно работать с существующей кодовой базой, так как я в основном начинал с нуля или сам начинал проект. Я немного лучше понимаю, когда люди говорят, что программисты тратят больше времени на чтение чужого кода, чем на его написание.

Функция, которую я добавил, заключалась в просмотре веб-страницы в поисках неработающих ссылок с заданным URL-адресом. У Мо уже было реализовано что-то подобное, в котором вы вводите URL-адрес веб-сайта, и он дает вам код состояния, возвращаемый этим конкретным URL-адресом. Я расширил эту функцию и дал команде новую опцию.

Я был немного осторожнее с организацией кода и следил за тем, чтобы сохранить как можно больше старого кода. Я не хотел делать проект совсем неузнаваемым. Поскольку большая часть кода уже была написана, в основном нужно было реорганизовать код, чтобы предотвратить его дублирование. Когда все было настроено и я еще немного протестировал код, я был готов объединить его с основным проектом. Однако перед этим я обязательно написал документацию для новых функций, которые я добавил. Постепенно я узнаю все больше и больше о важности хорошей документации. Я чуть не забыл внести изменения в README, чтобы отразить изменения, которые я сделал, стремясь продолжить писать код. Тем, кто пришел в проект позже, будет очень его не хватать, и ему будет сложнее пользоваться программой. Технологии могут быть сложными сами по себе, надлежащая документация может, по крайней мере, исправить некоторые из них. После добавления некоторой документации я, наконец, действительно был готов к слиянию своих вкладов. У меня была некоторая путаница в отношении веток и размещения моего запроса на слияние не в ту ветку. Но вскоре я решил эту проблему, закрыв запрос на извлечение. Когда я сделал свой последний запрос на вытягивание, я связал его с созданной мной задачей, чтобы убедиться, что она автоматически закрывается при слиянии. Я должен убедиться, что сделаю это в будущем. Связывание коммита или запроса на извлечение с задачей помогает поддерживать порядок в репозитории. Затем я написал Мо и попросил его одобрить мой вклад.

В целом, я чувствую, что узнал немного больше о сотрудничестве с другими на GitHub. Я не очень уверен в своих навыках работы с git… но за последние несколько недель я чувствую, что постепенно обретаю некоторую уверенность. Чтобы написать этот пост в блоге, мне пришлось проверить версию проекта Мо до слияния с помощью git checkout [commit hash], чтобы увидеть, насколько изменилось. Я нашел бы это полезным в прошлом. Много раз я исправлял ошибку, писал пару строк или код в другом месте, чтобы внести поверхностное изменение, только для того, чтобы все вылетало при следующей попытке компиляции. Ctrl+Z заходит так далеко. В будущем я постараюсь более широко использовать GitHub и постараюсь перенять некоторые хорошие привычки, например, часто делать коммиты. Это немного напоминает мне многократное сохранение во время сложной игры, только с кодом и гораздо более мощным. Недавнее сохранение или фиксация могут сэкономить часы работы и боли. Если есть что-то, чем я хотел бы заняться в будущем, так это документирование самого кода. Поскольку многое из того, что я делал, было реорганизацией, я не слишком много комментировал код. Я чувствую, что должен был немного больше задокументировать свой код и добавить больше комментариев. В то время как readme будет полезен для пользователей, будущие участники, вероятно, действительно оценят хорошо документированный код с хорошими комментариями. Это то, чем я постараюсь заняться в ближайший месяц.