Вклад в развитие ord
Предлагаемые шаги
- Найдите проблему, над которой вы хотите поработать.
- Определите, что будет хорошим первым шагом к решению проблемы. Это может быть в форме кода, исследование, коммерческое предложение или предложение закрыть проблему, если она устарела или вообще не является хорошей идеей.
- Прокомментируйте проблему, изложив в общих чертах свой первый шаг, и попросите откликнуться. Конечно, можно сразу же приступить к написанию кода или тестов, но это позволит избежать потенциально напрасных усилий, если проблема устарела, нечетко сформулирована, заблокирована на чем-то другом или иным образом не готова к реализации.
- Если проблема требует изменения кода или исправления ошибки, откройте PR проект с тестами и попросите высказать свое мнение. Это позволит убедиться, что все согласны с тем, что нужно сделать, или с тем, каким должен быть первый шаг в решении проблемы. Кроме того, поскольку тесты необходимы, написание тестов вначале позволяет легко убедиться в том, что изменение можно легко протестировать.
- Нажимайте на клавиатуру в произвольном порядке, пока тесты не пройдут, и дорабатывайте код до тех пор, пока он не будет готов к отправке.
- Пометьте PR как готовый к рассмотрению.
- Пересмотрите PR по мере необходимости.
- И, наконец, слияние!
Начните с малого
Небольшие изменения позволят вам быстро добиться результата, а если вы выберете неверный путь, то не потеряете много времени.
Идеи для решения мелких проблем:
- Добавление нового теста или тестового случая, увеличивающего площадь покрытия теста
- Добавление или улучшение документации
- Найдите проблему, которая нуждается в дополнительном исследовании, проведите это исследование и обобщите его в комментарии
- Найти устаревший вопрос и прокомментировать, что его можно закрыть
- Найдите проблему, которую не следует решать, и предоставьте конструктивный фидбек, подробно объяснив, почему вы так считаете
Слияние на ранней стадии и часто
Разбивайте большие задачи на множество мелких шагов, которые по отдельности обеспечивают прогресс. Если есть ошибка, можно открыть PR с добавлением игнорируемого теста. Он может быть объединен, и следующим шагом может быть исправление ошибки и снятие игнорирования теста. Проведите исследование или тестирование и сообщите о результатах. Разбейте функцию на небольшие подфункции и реализуйте их по одной.
Понять, как разбить большой PR на более мелкие, чтобы каждый из них можно было объединить, - это целое искусство, которым стоит заниматься. Сложность заключается в том, что каждый PR должен сам по себе быть улучшением.
Я и сам стараюсь следовать этому совету и всегда чувствую себя лучше.
Небольшие изменения быстро пишутся, рецензируются и объединяются, что гораздо интереснее, чем трудиться над одним огромным PR, на написание, рецензирование и объединение которого уходит целая вечность. Небольшие изменения не занимают много времени, поэтому, если вам нужно прекратить работу над небольшим изменением, вы не потеряете много времени, по сравнению с большим изменением, которое представляет собой многочасовую работу. Быстрое внесение PR улучшает проект сразу же, вместо того чтобы долго ждать более значительных улучшений. Небольшие изменения с меньшей вероятностью приведут к конфликту в процессе слияния. Как говорили Афиняне: Быстрые фиксируют то, что хотят, медленные сливают то, что должны.
Обратиться за помощью
Если вы застряли более чем на 15 минут, попросите помощи, например, в Rust Discord, Stack Exchange или в чате обсуждения проекта.
Практика отладки, основанной на гипотезах
Сформулируйте гипотезу о том, что является причиной проблемы. Придумайте, как проверить эту гипотезу. Проведите тестирование. Если она работает, то вы устранили проблему или теперь знаете, как ее устранить. Если нет, повторите тест с новой гипотезой.
Обращайте внимание на сообщения об ошибке
Читайте все сообщения об ошибке и не миритесь с предупреждениями.