Заметки из моего опыта получения поддержки стандартов кодирования в моей нынешней компании (небольшой по размеру разработчик нескольких проектов, каждый с 1-6 программистами на штуку; мы в основном C ++, но я думаю, что ответы все еще будут применяться):
Обзор кода шпаргалка - отличная идея. Адаптируйте его для своей организации (например, что легко упустить из виду или ошибиться) и обновляйте его по мере необходимости (раз в месяц возвращайтесь и удаляйте вещи, которые применяются другими способами). Если у вас есть вики, включите ссылки на «почему» для каждого пункта, если можете!
Разделите ваши отзывы . Некоторые коммиты требуют официальных отзывов, некоторые нет. Мы используем несколько типов:
- Обзоры Mini-Design-Doc , где короткие комментарии (обычно одна или две страницы в вики) комментируются группой до начала реализации. Отлично подходит для раннего "изобретения колеса".
- Руководствуясь теплые рецензии , где один или несколько пиров сидят с оригинальным автором перед коммитом (отлично подходит для распространения опыта, ускорения сотрудничества / стажеров). Автор оригинала обычно обнаруживает больше проблем, чем рецензенты. =) * * 1 018
- Официальная пост-фиксация холодные обзоры , где кто-то без руководства (кроме комментариев о регистрации и любой документации) просматривает код. Это имеет тенденцию выявлять проблемы логики или обработки ошибок, а также граничные ошибки.
Автоматизируйте и нажмите, не тяните полезная информация. Мы рассылаем отчеты с нашего сервера сборки - он обычно создается один раз за коммит (в зависимости от того, насколько он занят). Эти отчеты могут включать, например, различия между текущим Gimpel PC-Lint и последним. Это решает проблему «слишком много информации»: вы получаете только предупреждения / ошибки , за которые вы , возможно, несете ответственность, вместе с описанием. Когда информация сужается и становится понятной, люди используют ее в качестве учебного пособия.
Я не могу подчеркнуть это немного: не парься по мелочам . (См. Пункт № 0 изумительной книги по стандартам C ++.)
- Разделите ваш стандарт кодирования на два или более разделов: «обязательный» и «рекомендуемый» раздел - позволяет людям читать рекомендуемый раздел на досуге и оставляя необходимый раздел небольшим.
- При рассмотрении четко очерчивайте вещи, которые действительно важно исправить прямо сейчас, и вещи, которые нет. Например, для наших «теплых обзоров»: несоответствия в расположении скобок и именовании явно «исправляют это позже», потому что мы не хотим лишать законной силы любое тестирование, выполненное людьми до проверки перед фиксацией. Логические ошибки - это «исправить сейчас, прежде чем совершить». Несоответствия в обработке ошибок или пропущенные случаи различаются. Если от вас потребуют, чтобы люди немедленно исправляли даже незначительные нарушения, вы получите негодование.
Наконец, поощряют участие и изменяют ваш стандарт кодирования с течением времени. (Это то, где вики может быть полезна.) Если у кого-то есть веская причина не следовать какой-то части стандарта (либо у него есть что-то лучшее, либо слишком много PITA, чтобы следовать), слушайте и отвечайте. Если люди действительно активно вносят вклад и понимают стандарт, а не просто получают его, вы получите гораздо лучший ответ.