juan_gandhi: (Default)
[personal profile] juan_gandhi
they improve reliability and kill creativity

Date: 2012-03-18 05:13 pm (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
Как именно Google делает code review и в чём заключается ошибка?

Date: 2012-03-19 04:03 pm (UTC)
From: [identity profile] sab123.livejournal.com
В мелких изменениях, и ревьюях на каждое изменение. То есть, идея частых коммитов мне тоже нравится, но мне нравится их делать на рабочую ветку (или ствол), который до полного релиза не виден пользователям. А ревьюи по уму надо делать на большие законченные фичи. Если их делать на каждое мелкое изменение, то волей-неволей ревьюер следует за ходом мысли изначального автора и не видит большую картину. То есть, если ставить целью ревьюев поиск неправильно поставленных пробелов - то да, так проще. Но это плохие, негодные ревьюи. А если ставить целью оценку правильности всей фичи и мыслепоиск глюков в ней, то надо рвеьюить большие куски кода сразу, разглядывая всю суету с дистанции.

Date: 2012-03-20 07:28 am (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
Так ведь большая картина может в мозг не уместиться.
Не зря же изменения делаются маленькими.

А как следует проводить code review: в одиночистве или в диалоге с писателем?

Date: 2012-03-20 03:33 pm (UTC)
From: [identity profile] sab123.livejournal.com
А для этого программу делят на уровни абстракции. На каждом уровне абстракции вся картина целиком должна помещаться в мозг. Я страшно не люблю, когда люди пишут много-много "плоского" кода, и потом в этой каше делается концов не найти (зато глюков полно).

Собственно, проблема в маленьких изменениях как раз в том, что за деталями теряется большая картина, и запросто можно починить одно место и при этом испортить десять других. Вот для этого по уму и нужны ревьюи: чтоб отойти на некое расстояние и посмотреть со стороны, вписываются ли изменения в большую картину. И не противоречат ли друг другу части результата.

Ну да, тесты тут конечно тоже в помощь, но у тестов другая функция: они ловят совсем грубые поломки, и более того, заранее предсказанные грубые поломки. Функция ревьюя - в том, чтобы не дублировать собой тесты, а дополнять их. Поддерживать консистентность большой картины. Искать возможности новых поломок, которые не предсказаны в старых тестах, и соответственно добавлять для них новые тесты.

Проводить ревьюй следует сначала чтением в одиночестве, а потом в диалоге. Если нечто непонятно при чтении в одиночестве, то значит оно или плохо документировано и туда надо добавить комментарий, или просто криво и должно быть исправлено.

Date: 2012-03-20 08:13 pm (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
1) Если всё понятно при одиночном code review, то зачем нужен диалог?
На мой взгляд диалог при code review полезен тем, что позволяет провести review в разы быстрее.
Быстрее обсудить альтернативные подходы к написанию кода.
Быстрее обсудить возможные подводные камни и где именно код их обходит.
Быстрее воссоздать контекст в голове проверяющего.

2) Действительно: если непонятно из кода, что происходит, то код, вероятно, нужно переписывать.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 91011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 9th, 2025 03:15 pm
Powered by Dreamwidth Studios