Что содержит стандартный обзор кода?

19

В моей компании это обсуждение по электронной почте того, какая функция реализована и какая ошибка исправлена ​​и отправлена ​​тем, кто пишет код. И рецензент, который получает почту, рассмотрит код и обсудит качество и то, как редактировать код, по его мнению. Что содержит стандартный обзор кода?

Николь
источник
10
Здесь, очевидно, у нас нет времени на проверку кода, но у нас много времени, чтобы разобраться с полученными ошибками. Я бы хотел пошутить
MetalMikester

Ответы:

12

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

Я обнаружил, что обзор модульных тестов дает больше преимуществ. Большинство разработчиков, с которыми я работал, на самом деле не знают, как правильно выполнить модульное тестирование, и как только они получают это «Ага!» момент, когда остальная часть их кода начинает улучшаться. Вот подсказка: это не модульный тест, если вы требуете от пользователя что-то проверить, и это не модульный тест, если вы только запускаете что-то для запуска в отладчике.

Берин Лорич
источник
LOL, хорошее понимание модульных тестов является обязательным. И хорошая новость заключается в том, что тестирование - это просто здравый смысл - требуется меньше времени, чтобы понять, чем сказать ... время, необходимое для освоения нового языка.
Работа
Я испытываю придирчивость к вещам, когда не хватает охвата модульных тестов. Когда я вижу модульные тесты в обзоре кода, это первое место, на которое я смотрю. Если я вижу, что юнит-тесты соответствуют бизнес-требованиям и разумным граничным случаям (при необходимости проверяйте нулевые значения, граничное тестирование диапазонов значений), то я склонен не придираться - что не означает, что вы должны выбирать мелочи , Просто «доказательство в пудинге». Трудно спорить с хорошо построенными модульными тестами, которые проходят.
Грег Бургардт
6

Это имеет тенденцию варьироваться в зависимости от проблемы. Много раз это простой штамп. «Вот в чем проблема, посмотрите на эту строку здесь, очевидно, что идет не так, и вот где я это исправил». "Да, это довольно очевидно. Идите и проверьте это."

Но когда происходит что-то более сложное, обычно это выглядит так:

  • Запустите проверку на наличие изменений в TortoiseSVN и получите список измененных файлов.
  • Приведите рецензента в свой офис.
  • Объясните проблему с CR из системы отслеживания ошибок, открытой для справки.
  • Перейдите вниз по списку файлов в TortoiseSVN, открыв каждый из них в BeyondCompare, чтобы просмотреть изменения.
  • Если рецензент не понимает изменений, объясните, что вы сделали и почему.
  • Рецензент может заметить что-то нехорошее. Если это так, обсуждайте его, пока не достигнете соглашения о том, стоит ли его менять. (Если необходимо внести простые изменения, вы даже можете отредактировать файл внутри BeyondCompare.)
  • Если вы внесли какие-либо изменения, перекомпилируйте и убедитесь, что он собран!
  • Запустите программу, чтобы продемонстрировать рецензенту, что ваше исправление действительно работает.
  • Проверьте это в.
Мейсон Уилер
источник
4

IMO, обзор кода не имеет ничего общего с функциями или ошибками, но фокусируется на качестве кода и тестов, написанных для него.

Итак, вы сидите рядом со своим пэром и заставляете его объяснить код или взять код и пройти его, в зависимости от ситуации.

Это помогает, когда все программируют по одним и тем же стандартам, и если вы используете такие инструменты, как fxCop, для автоматизации части процесса.

SYG
источник
2

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

Также важно обеспечить соблюдение стандартов в обзоре кода, но не делать их единственной целью.

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

HLGEM
источник
Я всегда предлагаю, чтобы он оставил на усмотрение разработчика то, что он делает с отзывами об отзывах. Рецензент не обязательно знает лучше, и когда соглашение является обязательным, вам может понадобиться потратить немного времени на обучение рецензента. Я бы рассмотрел окончательную проверку «интеграции» старшим / ведущим разработчиком.
Joppe
0

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

  • не может быть исправлено из-за временных ограничений
  • признано более раздражающим, чем стоит руководство

Руководящие принципы должны иметь смысл, и должны быть надлежащие инструменты для выявления нарушений и проведения рефакторинга как можно проще. Всегда смотрите на цель руководства и обзор кода

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

На мой взгляд, могут существовать руководящие принципы:

  • общие правила синтаксиса и кодирования (выберите тот, который уже существует и используйте инструменты, которые проверяют автоматически)
  • Правильная обработка исключений
  • Правильная регистрация
  • Хорошее использование парадигм для языка (SOLID для OO языков)
  • Очевидные и хорошо продуманные зависимости между компонентами (используйте такие инструменты, как NDepend)
  • Рабочий скрипт сборки
  • Документация присутствует (запуск разработчика, руководство по установке)
  • внутренние библиотеки для использования
  • политика компаний
  • сторонние инструменты, которые не разрешены
  • Модульные тесты присутствуют и не проваливаются
  • кодовое покрытие 90%
  • ...

Учитывая это, проверка кода состоит из программного обеспечения, проверяемого на соответствие руководствам и:

  • обсудить нарушения с программистом
  • исправить ненужные нарушения
  • комментировать необходимые нарушения
KeesDijk
источник