Writing Clear Pull Request Descriptions in English
Практичний посібник з написання чітких описів запитів на завантаження англійською мовою: структура, фрази, час дієслова і приклади перед/ після, які прискорять перегляд ваших PR.
Опис запитів на завантаження (PR) є попереднім листом до вашого коду. Рецензенти вирішують, як читати ваш файл diff на основі того, що ви написали у верхній частині. За допомогою чіткого опису ваш PR буде об’ єднано швидше, за допомогою нечіткого опису він буде чекати у черзі декілька днів. Для не-англомовних носіїв англійської, хороша новина в тому, що PR-писання слідує передбачуваній структурі з повторюваними фразами.
Стандартна структура
Більшість команд очікують на чотири розділи, навіть якщо шаблон не передбачає їх використання:
- ** Що ** — що змінює ця PR (одне або два речення)
- Чому — проблема або мотивація
- Як - підхід, який ти взяв
- ** Тестування ** — як ви перевірили, чи працює програма
Заголовки не потрібні для невеликих PR, але для чогось нетривіального вони допомагають рецензентам сканувати.
Розділ 1: Що — використовувати теперішній час, наказовий або описовий
Заголовок і резюме описують, що PR * робить *, а не що ви * зробили *. Англійська конвенція тут є ** present simple **, часто у настрої імперативного речення (відповідний стиль повідомлення про перенесення).
** Заголовок: ** Додати логіку повторення спроб до клієнта платежу
- Нет, не надо Цей PR ** додає ** експоненційне відключення до платіжного клієнта, тому перехідні помилки ** повторюються ** автоматично.
Уникайте оповіді у минулому часі, на зразок « Я додав логіку повторення, а потім перевірив її ». Рецензентам важливий поточний стан коду, а не ваша особиста історія.
| Weak | Strong |
|---|---|
| ”I have made some changes to the auth." | "Refactors the auth middleware to support token rotation." |
| "This is for fixing the bug." | "Fixes the race condition in the session cache.” |
Розділ 2: Чому — дати рецензентам контекст
Чому це те, що рецензенти цінують найбільше. Без неї вони не можуть судити, чи правильно ваше рішення. Посилання на проблему і опис проблеми у простих словах.
** Чому: ** Користувачі з повільними з’ єднаннями іноді ** бачать дублікати платежу**, оскільки клієнт не усуває дублікати повторних спроб. Це розв’язує проблему #482.
Корисні фрази:
- Це ** розв’язує ** довгострокову проблему, де… ”
- «Причина в тому, що…»
- «Перед цим, X відбувалося коли б то не було…»
- Це розблоковує роботу з міграції в #501
“Раніше, працівник ** безшумно скидав ** повідомлення, коли черга була повною. Цей PR робить невдачу явною»
Зауважте використання ** would ** для опису минулої звичної поведінки — це природно і точніше для опису повторюваних помилок.
Розділ 3: Як — пояснити неочевидні рішення
Не переписуйте diff рядок за рядком; переглядачі можуть читати код. Замість цього, пояснюйте вибір, який вони не можуть побачити.
** Як: ** Я ** обрав ** обмежувач бітового відсіку замість фіксованого вікна, оскільки він ** обробляє серії більш граціозно **. Я навмисно опустив метрики, щоб зберегти фокус на PR - це **прийде в подальшому **.
Фрази для пояснення рішень:
- Я ** вибрав ** X над Y, тому що… ”
- «Я навмисно випустив Z, щоб зберегти обсяг малим.»
- Це навмисно трохи консервативно — приємно розслабити його пізніше. ”
- «Я ** пішов туди і назад на ** назву; відкритий для пропозицій. ”
Виказувати те, що ви не зробили, є ознакою спілкування на високому рівні. За межами сфери дії - це ключова фраза:
«Переіменування спадкових полів є ** поза сферою** для цього PR.»
Розділ 4: Тестування — будьте конкретними
“Проверено локально” не говорить рецензенту нічого. Зазначте, що ви пробігли і що спостерігали.
** Тестування: ** Додано тести одиниць для обчислення відступу. Запустив пакет інтеграції локально — все зелене. Перевірено вручну за допомогою шлюзу перевірки ** за допомогою 500** і підтверджено за допомогою трьох повторних спроб.
Корисні дієслова: * перевірено, підтверджено, відтворено, впроваджено, покрито*.
«Я відтворив оригінальну помилку на
main, а потім підтвердив, що вона більше не виникає на цій гілці»
Прошу про перегляд, який ти дійсно хочеш
Скажи рецензентам, на чому зосередитися. Це ввічливо і прискорює справи.
- «Головна річ, на яку я б хотів звернути увагу — це логіка блокування в
cache.go.» - «Не соромтеся ** скидати ** сформовані файли — реальна зміна в трьох файлах.»
- «Це готовий для перегляду / все ще чернетка / робота в процесі (WIP).»
“Зауваження: diff виглядає великим, але більшість з них є залежними від виробника. Фактична зміна становить ~40 рядків»
До і після: повне переписування
** До: **
“Я все виправив. Будь ласка, перевірте. Я думаю, що це працює зараз, але не впевнений. була проблема раніше»
Після:
** Виправити дублікат зарядів при повторній спробі **
- Нет, не надо ** Що: ** Додає ключі ідемпотентності до клієнта платежу.
- Нет, не надо ** Чому: ** При нестабільних з’ єднаннях повторні спроби створили дублікати зобов’ язань (# 482). Клієнт не мав можливості сказати шлюзу «це той самий запит»
- Нет, не надо ** Як: ** Кожен запит тепер має ключ UUID, який створюється один раз і використовується знову і знову. Я ** вибрав ** ключі, створені клієнтом, тому нам не потрібно подорожувати туди-назад.
- Нет, не надо ** Тестування: ** Тестування блоків на повторне використання ключів; вручну примусово повторено спроби проти стадіювання і підтверджено один заряд.
- Нет, не надо Головне, на що я б хотів звернути увагу, це логіка ключа-життя в
client.py.
Поширені помилки
- ** Неясні назви. ** « Оновити код » або « Виправити ваду » змушує переглядачів відкривати diff, щоб дізнатися щось. Починається з дієслова і дієприкметника: « Додати », « Виправити », « Перефрактурувати », « Вилучити ».
- ** Стіни тексту в минулому часі. ** Тримайте резюме в теперішньому часі і коротким.
- Нет “почему”. Одна из самых распространенных причин, почему PR задерживается, это то, что рецензент не понимает мотивацию.
- Фальшива скромність. “Не впевнений, чи це правильно” запрошує сумніви. Замість цього: “Я б був вдячний за другу думку про підхід до блокування” - впевнений * і * відкритий.
Шаблон для повторного використання
## What
One-sentence summary in present tense.
## Why
The problem this solves. Link the issue.
## How
Non-obvious decisions and trade-offs. What's out of scope.
## Testing
What you ran and what you observed.
## Review notes
Where to focus. Anything reviewers should skim.
Ключевые вещи
- Використовуйте теперішній час для чого робить PR; було б для минулих повторюваних вад.
- Завжди включайте ** чому ** — це те, що найбільше потрібно рецензентам.
- Пояснюйте рішення і скажіть, що виходить за рамки.
- Будь конкретним у ** тестуванні **: назвемо те, що ви запустили і спостерігали.
- Направте увагу рецензента на «головне, на що я б хотів звернути увагу, це…».
Хорошим описом PR є емпатія в письмовій формі. Затрать на это три минуты, и ты сэкономишь на своих рецензентах тридцать.
Наприклад, мова опису: мова, що використовує описи для позначення невідомих об’єктів
Будьмо чесними - спілкування між культурами і мовними рівнями може бути складним, навіть в рамках команди з добрими намірами. Як розробники, ми часто припускаємо, що кожен розуміє технічний контекст нашої роботи, але це припущення може створити тертя під час перегляду коду і обговорення запитів на витягування. Для нерідних носіїв англійської мови, особливо тих, хто переходить до професійного середовища розвитку, тонкі відмінності у фразуваннях і дієсловах можуть призвести до нерозуміння і затримок у отриманні зворотного зв’язку. Це не про очікування ідеальної граматики; це про прагнення до ясності і активне вирішення потенційних бар’єрів для розуміння.
Однією з поширених проблем є використання надто формальної або технічної мови, яка не є відразу доступною. Уявіть, що ви отримуєте коментар на зразок: « Реалізація відхиляє від встановлених архітектурних парадигм ». Хоча це технічно вірно, це густий коментар, який не пояснює чітко, * чому * відхилення потребує уваги. Замість цього спробуйте щось більш пряме: « Ця зміна вводить трохи інший підхід до обробки даних. Чи можемо ми обговорити наслідки для підтримки послідовності з нашою існуючою системною архітектурою?» Зауважте додавання « трохи » — пом’якшення мови — і оформлення цього як дискусії, а не як невідкладної проблеми. Аналогічно, такі фрази, як « Я відновив цей запит через … » можуть звучати різко. Більш м’який вступ може бути: “Щоб забезпечити узгодженість зі стандартами проекту, я повернув цей запит. Давайте обговоримо логіку, що стоїть за оригінальною зміною»
Інша область уваги повинна бути навколо вираженні наміру. Замість простого зауваження, що було зроблено («Я додав нову функцію»), описати * чому * вона була додана і її призначену мету («Я реалізував нову функцію для спрощення обробки даних, зменшуючи потенційні помилки в подальших обчисленнях»). Це надає контекст для переглядачів, щоб швидко зрозуміти значення зміни. Не бійтеся використовувати такі фрази, як «Покращити…» або «Це адресує…».
Нарешті, пам’ятайте, що коротке спілкування є ключем. Хоча деталі важливі, уникайте непотрібного жаргону і надто складних речень. Приоритетно передати основну інформацію ефективно. Хороший опис PR не повинен бути романом; він повинен бути чіткою дорожньою картою для рецензента, щоб зрозуміти мету і вплив вашої роботи. Увага до цих нюансів не тільки допоможе носієві мови, але і в кінцевому підсумку покращить спілкування у вашій команді.