Перейти к содержанию

Избегание расширения объема работ

«Расширение объема работ» происходит, когда список решенных проблем или реализованных функций в рамках одного вклада значительно превышает то, что было запланировано в начале работы. Вы начинаете с простой проблемы, обнаруживаете тесно связанную с ней проблему и решаете включить и ее исправление, затем третью… и, не успев опомниться, получаете запрос на слияние, который закрывает 5 проблем и добавляет 3 новые функции, включая десятки файлов.

Расширение объема работ случается с каждым. Это понятие хорошо знакомо опытным разработчикам; все мы сталкивались с этим много раз и испытывали все связанные с этим проблемы.

Есть очень практические причины, чтобы избегать расширения объема работ. Чем больше вклад, тем сложнее с ним работать. Становится труднее выявить крайние случаи или потенциальные проблемы, а это означает, что общее качество вклада может снизиться. Рецензирование также становится более сложной задачей, когда рецензенту приходится иметь дело с несколькими, потенциально не связанными между собой контекстами. Больший вклад означает больше комментариев рецензентов, и как участнику проекта может быть сложно следить за несколькими ветками рецензирования. Даже ваш опыт работы с GitHub ухудшится — интерфейс GitHub будет работать медленнее по мере увеличения размера PR, что означает, что навигация по файлам через интерфейс GitHub и попытки оставить комментарии рецензентов станут все более сложными.

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

Разработка программного обеспечения — это всегда процесс постепенного совершенствования. Каждый отдельный вклад должен улучшать кодовую базу в результате слияния, но вполне допустимо оставлять ошибки или части функций для будущего усовершенствования. Это может означать разбиение запроса на извлечение на несколько частей, которые можно просматривать независимо друг от друга, или регистрацию проблемы, чтобы кто-то другой мог ее исследовать и решить.

Ограничение объема каждого вклада помогает всем участникам, включая вас. Ваши рецензенты и даже вы сами будете благодарны за это.