awesome-everything EN
↑ Обратно к восхождению

Инженерная практика

Code review: чтение диффов и комментариев

Суть Читай реальные диффы, описание PR и комментарии ревью — поймай дизайн-баг, который обязан увидеть ревьюер, оцени читаемость PR и перепиши комментарий так, чтобы он называл важность и фикс.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

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

Цель

Отработай цикл ревьюера на реальном материале: отдели неразрешимый дизайн-изъян от механического шума, читай форму PR на читаемость и пиши фидбэк, отвечающий на «насколько важно» и «что делать».

Сниппет 1 — путь ретрая, который ревьюер обязан поймать

# PR: "Add billing retry on transient gateway errors"
def charge_customer(order_id, amount):
    record = db.insert_charge(order_id=order_id, amount=amount, status="pending")
    for attempt in range(3):
        resp = gateway.charge(amount)          # may time out AFTER charging
        if resp.ok:
            db.update(record, status="settled")
            return resp
        time.sleep(2 ** attempt)               # back off and retry
    db.update(record, status="failed")
    raise ChargeError(order_id)
Викторина

CI зелёный — формат, lint, типы и юнит-тесты проходят. Какой дефект ревью существует, чтобы поймать именно здесь?

Сниппет 2 — описание PR

Title:  Refactor checkout + add coupons + migrate orders table
Files changed: 47   +1,812  −940
Description: "Cleaned up checkout, added coupon support, and migrated the
orders table to the new schema. All in one PR so it deploys atomically."
Викторина

Как назначенный ревьюер, какой senior-ответ на этот PR ещё до прочтения хотя бы строчки диффа?

Сниппет 3 — комментарий ревью

Reviewer comment on a 40-line PR, left as one line on the file:
  "this is confusing, why did you even do it this way"
Викторина

Почему этот комментарий породит трение и какова минимальная переписка, которая его чинит?

Сниппет 4 — дифф, который никогда не должен доходить до человека

- const  userName=req.body.userName
+ const userName = req.body.userName;
- function getUser( id ){return db.find(id)}
+ function getUser(id) { return db.find(id); }
Викторина

Это единственные изменения в PR, и ревьюер потратил десять минут на ручную проверку пробелов и точек с запятой. Что это говорит о пайплайне?

Итог

Чтение — это и есть работа: зелёный CI и проходящие тесты не сертифицируют денежный путь, поэтому ревьюер охотится за неразрешимым дефектом — здесь это неидемпотентный ретрай, списывающий дважды. Форму PR читают до диффа: изменение в 1812 строк на три концерна делят или стекают, потому что внимание до него не дотянется. Комментарии судят по тому, называют ли они важность и фикс и целятся ли в код, а не в автора. А дифф, полный правок пробелов, проверяемый человеком вручную, — это отсутствующий гейт форматирования: разрешимый класс никогда не должен доходить до ревью. Диагностируй по артефакту, чини на правильном слое, держи человеческое внимание на том, что может решить только человек.

Продолжить восхождение ↑Code review: перепроектируй процесс ревью
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.