Как стать автором
Обновить
120.41
InlyIT
Для старательного нет ничего невозможного

Пирамида инспекции кода

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

Недавно я разместил в своем Твиттере небольшую иллюстрацию, которая проливает свет на эту проблему и дает наводку, на каких аспектах следует сосредоточиться прежде всего, и назвал ее «Пирамида инспекции кода». Ее назначение – помочь держать в приоритете составляющие инспекции кода, имеющие первостепенную важность (по крайней мере, на мой взгляд), а так же указать, какие составляющие можно и нужно автоматизировать.

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




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

Ярусы перечисляются от верхнего к нижнему.

Стиль


Какие вопросы задавать:

  • Применяется ли принятый для проекта стиль форматирования?
  • Соблюдаются ли договоренности относительно названий?
  • Следует ли код принципу DRY (Don’t Repeat Yourself – Не повторяйтесь)?
  • Достаточно ли «читабелен» код (с точки зрения длины методов и так далее)?

Тесты


Какие вопросы задавать:

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

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


Какие вопросы задавать:

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

Семантика имплементации


Какие вопросы задавать:

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

Семантика API


Какие вопросы задавать:

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

FAQ


А почему пирамида?

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

Так это же треугольник!

Вам так только кажется. Это пирамида, вид сбоку.

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

Excalidraw.
Теги:
Хабы:
Всего голосов 14: ↑14 и ↓0+14
Комментарии8

Публикации

Информация

Сайт
inlyit.com
Дата регистрации
Дата основания
Численность
31–50 человек
Местоположение
Россия