Пирамида Проверки Кода

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

Недавно я опубликовал в своем Твиттере маленькая иллюстрация , которая проливает свет на эту проблему и дает рекомендации о том, на каких аспектах следует сосредоточиться в первую очередь, называемая пирамидой проверки кода.

Его цель — помочь расставить приоритеты для компонентов проверки кода, которые имеют первостепенное значение (по крайней мере, на мой взгляд), а также указать, какие компоненты можно и нужно автоматизировать.

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

Поэтому я делаю репост на вашем сайте .

Вы также можете скачать изображение в формате SVG .



Пирамида проверки кода

Внизу находятся аспекты, которые исправить в будущем будет труднее, вверху — те, которые исправить будет проще.

Лучше сосредоточить свои усилия на трех нижних уровнях.

Два верхних уровня подходят для автоматизации.

Уровни перечислены сверху вниз.



Стиль

Какие вопросы задавать:
  • Используется ли стиль форматирования, принятый для проекта?
  • Соблюдаются ли соглашения об именах?
  • Соответствует ли код принципу DRY (не повторяйся)?
  • Достаточно ли «читабелен» код (с точки зрения длины методов и т. д.)?


Тесты

Какие вопросы задавать:
  • Вы успешно прошли все тесты?
  • Была ли новая функциональность достаточно протестирована?
  • Проверяются ли крайние случаи?
  • Используется ли модульное тестирование, когда это возможно, и интеграционное тестирование, когда это необходимо?
  • Предоставляется ли нефункциональное тестирование (например, производительности)?


Документация

Какие вопросы задавать:
  • Достаточно ли документации для новой функциональности?
  • Имеются ли все соответствующие документы (README, документация по API, руководство пользователя, справочная документация и т. д.)?
  • Все ли документы понятны – без опечаток и серьезных грамматических ошибок?


Семантика реализации

Какие вопросы задавать:
  • Соответствует ли семантика исходным требованиям?
  • Есть ли ошибки в логике?
  • Это слишком сложно?
  • Как обстоят дела с надежностью (есть ли проблемы с конкуренцией, правильно ли налажена обработка ошибок)?
  • Как проходит выступление?
  • Как обстоят дела с безопасностью (в плане SQL-инъекций и других проблем)?
  • Каково отслеживание (например, метрики, журналирование, трассировка)?
  • Выполняют ли недавно добавленные зависимости свою работу? Лицензии у них в порядке?


Семантика API

Какие вопросы задавать:
  • Является ли размер API достаточным и в то же время не чрезмерным?
  • Выполняется ли каждая операция одним способом, а не несколькими?
  • Сохраняется ли последовательность и принцип «минимума сюрпризов»?
  • Четко ли разделены внутренний и внешний API, не просачивается ли внутренний API во внешний?
  • Есть ли какие-либо изменения, которые вызывают проблемы в частях приложения, ориентированных на пользователя (классы API, конфигурация, форматы журналов и т. д.)?
  • Является ли API в целом полезным и не слишком ли узконаправленным?


Часто задаваемые вопросы

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

Итак, это треугольник! Это только вам так кажется.

Это вид пирамиды сбоку.

Какие инструменты вы использовали при создании этого изображения? Экскалидро .

Теги: #Идеальный код #проверка кода #проверка кода

Вместе с данным постом часто просматривают: