Существуют ли хорошие межметодные/межклассовые показатели сложности?

Обычный совет по длине метода/функции — писать небольшие методы, чтобы повысить как читабельность, так и тестируемость. Они измеряются, например, с помощью показателей цикломатической и когнитивной сложности. Аналогичные метрики применяются к классам или вообще к любым единицам кода, которые использует язык программирования.

Однако применение этих шагов приводит к множеству небольших методов, которые можно читать и тестировать только сами по себе, но при этом теряется «общая картина». Чтобы понять код, нужно понимать уже не один, скажем, 200-строчный метод, а 30 10-строчных методов (по моему опыту, общий LOC обычно сильно вырастает). Хуже того, читателю приходится много «прыгать» между ними. Чтобы на самом деле понять код, читатель должен держать в голове гораздо больше информации, чем до разделения. Та же проблема возникает при попытке написать интеграционный тест, который проверяет эти методы вместе.

Это приводит к тому, что в обзорах кода возникает ситуация, когда метрики сложности с одним методом применяются без какого-либо противовеса и фактически ухудшают читабельность и тестируемость во имя «чистого кода».

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

0 ответов