Оценка людей в обзоре противоречит большинству успешных систем, с которыми я работал, может быть, всем. Но цель, которой я пытался достичь на протяжении более 20 лет, заключается в уменьшении количества ошибок и увеличении производительности в час на одного инженера. Если оценка людей - это цель, я полагаю, можно использовать отзывы. Я никогда не видел ситуации, когда это требовалось, в качестве работника или лидера.
Некоторые объективные исследования (Фаган и т. Д.) И многие распространенные мнения свидетельствуют о том, что взаимоотношения со сверстниками облегчают анализ кода, направленный на уменьшение ошибок и повышение производительности. Работающие менеджеры могут участвовать как работники, но не как менеджеры. Обсуждаются вопросы для обсуждения, изменения для удовлетворения рецензентов, как правило, полезны, но не обязательны Отсюда и отношения со сверстниками.
Любые автоматические инструменты , которые могут быть приняты без дальнейшего анализа или решений хороши - ворсинки в C, C ++, Java. Регулярная компиляция. Компиляторы ДЕЙСТВИТЕЛЬНО хороши в поиске ошибок компилятора. Документирование отклонений в автоматических проверках звучит как тонкий обвинительный акт автоматических проверок. Директивы кода (как в Java), допускающие отклонения, довольно опасны, ИМХО. Отлично подходит для отладки, чтобы вы могли быстро понять суть дела. Не очень хорошо найти в плохо документированном блоке кода в 50 000 строк без комментариев, за который вы несете ответственность.
Некоторые правила глупы, но легко применяются; например, по умолчанию для каждого оператора switch, даже если он недоступен. Тогда это просто флажок, и вам не нужно тратить время и деньги на тестирование со значениями, которые ничего не соответствуют. Если у вас есть правила , вы будете иметь глупость , они неразрывно связаны . Преимущество любого правила должно стоить глупости, которую оно стоит, и эти отношения должны проверяться через регулярные промежутки времени.
С другой стороны, «Это работает» не является добродетелью перед проверкой или защитой при рассмотрении. Если разработка проводилась по модели водопада , вы хотели бы выполнить обзор, когда кодирование завершено на 85%, до того, как сложные ошибки будут обнаружены и устранены, потому что обзор - более дешевый способ их обнаружения. Так как реальная жизнь не модель водопада, когда пересматривать это своего рода искусство и составляет социальную норму. Люди, которые на самом деле будут читать ваш код и искать в нем проблемы, - чистое золото. Управление, которое поддерживает это на постоянной основе, является жемчужиной выше цены. Отзывы должны быть как чекины - рано и часто .
Я нашел эти вещи полезными:
1) Нет стиля войн . Куда идут открытые фигурные скобки, должна быть только проверка согласованности в данном файле. Все так же. Это нормально тогда. То же глубина вдавливания ** s и ** вкладка ширины . Большинство организаций обнаруживают, что им нужен общий стандарт для табуляции, который используется как большое пространство.
2) Рваный
looking
текст, который не
line up is hard to read
для содержания.
Кстати, K & R выделены пятью (ПЯТЬ) пробелами, поэтому апелляции к авторитету бесполезны. Просто будь последовательным.
3) Пронумерованная, неизменяемая, общедоступная копия файла, подлежащего проверке, должна быть указана за 72 часа или более до проверки.
4) Нет дизайна на лету. Если есть проблема или проблема, запишите ее местоположение и продолжайте движение.
5) Тестирование, которое проходит все пути в среде разработки, является очень, очень, очень, хорошей идеей. Тестирование, которое требует огромных внешних данных, аппаратных ресурсов, использования сайта клиента и т. Д. И т. Д., - это тестирование, которое стоит целое состояние и не будет тщательным.
6) Не- ASCII формат файла приемлем, если инструменты для создания, отображения, редактирования и т. Д. Существуют или создаются на ранней стадии разработки. Это мой личный уклон, но в мире, где доминирующая ОС не может по-своему обойтись с менее чем 1 гигабайтом оперативной памяти, я не могу понять, почему файлы меньше, скажем, 10 мегабайт должны быть чем-то кроме ASCII или другого коммерческого формата. Существуют стандарты для графики, звука, фильмов, исполняемых файлов и инструментов, которые идут вместе с ними. Нет оправдания для файла, содержащего двоичное представление некоторого числа объектов.
Для обслуживания, рефакторинга или разработки выпущенного кода одна группа сотрудников, которых я использовал, просмотрела еще один человек, сидя за дисплеем и рассматривая различия между старым и новым , в качестве шлюза для регистрации филиала. Мне понравилось, это было дешево, быстро, относительно легко сделать. Проходы для людей, которые не читали код заранее, могут быть полезными для всех, но редко улучшают код разработчика.
Если вы распределены географически, смотреть на экран различий во время разговора с кем-то, кто смотрит на него, было бы относительно легко. Это касается двух человек, которые смотрят на изменения. Для большой группы, которая прочитала рассматриваемый код, несколько сайтов не намного сложнее, чем все в одной комнате. ИМХО, очень хорошо работают несколько комнат, соединенных общими экранами компьютеров и сквош-боксами. Чем больше сайтов, тем больше управления собраниями. Менеджер как фасилитатор может заработать здесь. Не забывайте продолжать опрашивать сайты, на которых вы не находитесь.
В какой-то момент та же организация провела автоматическое модульное тестирование, которое использовалось в качестве регрессионного тестирования. Это было действительно приятно. Конечно, мы тогда поменяли платформы и автоматизированный тест остался позади. Обзор лучше, как отмечает Agile Manifesto , отношения важнее, чем процесс или инструменты . Но как только вы получите обзор, автоматические юнит-тесты / регрессионные тесты станут следующей наиболее важной помощью в создании хорошего программного обеспечения.
Если вы можете основывать тесты на требованиях , ну, как говорит дама в «Когда Гарри встретил Салли» , у меня будет то, что она имеет!
Все обзоры должны иметь парковку для учета требований и проблем дизайна на уровне выше кодирования. Как только что-то признается принадлежащим на стоянке, обсуждение должно прекратиться в обзоре.
Иногда я думаю, что проверка кода должна быть похожа на схематическую проверку в проектировании аппаратного обеспечения - полностью публичную, тщательную, учебную, завершение процесса, шлюз, после которого он собирается и тестируется. Но схематические обзоры имеют большой вес, потому что изменение физических объектов стоит дорого. Обзоры архитектуры, интерфейса и документации для программного обеспечения, вероятно, должны быть тяжелыми. Код более плавный. Проверка кода должна быть легче.
Я думаю, что во многих отношениях технологии так же важны для культуры и ожидания, как и для конкретного инструмента. Подумайте обо всех импровизациях « Швейцарской семьи Робинсонов » / Флинстоунов / МакГайвера, которые радуют сердце и бросают вызов уму. Мы хотим, чтобы наши вещи работали . Единого пути к этому нет, равно как и «интеллект», который можно каким-то образом абстрагировать и автоматизировать с помощью программ ИИ 1960-х годов .