Cognitive Complexity - Когнитивная сложность: новый способ измерения понимаемости кода
23 ноября 2023 г.Когнитивная и Цикломатическая Сложность в Python
Метрики сложности кода — ключевой инструмент для оценки его качества и поддерживаемости. Две важные метрики, которые помогают в этом деле, — Когнитивная и Цикломатическая Сложность. Давайте рассмотрим их на примерах на языке Python.
Когнитивная Сложность
Когнитивная сложность измеряет усилие, необходимое для понимания кода. Важные факторы включают в себя вложенные условия и логические операторы. Рассмотрим пример:
def calculate_discount(total_amount, is_gold_member):
if total_amount > 100:
if is_gold_member:
return 0.1
else:
return 0.05
else:
return 0
В этой функции когнитивная сложность высока из-за вложенных условий, что может затруднить понимание кода.
Цикломатическая Сложность
Цикломатическая сложность — это количественная мера сложности программы. Рассчитывается по формуле V(G) = E - N + 2P
, где E
— количество рёбер, N
— количество узлов, P
— количество связных компонент (1 для единственной программы).
Пример функции для проверки простоты числа:
def is_prime(number):
if number < 2:
return False
for i in range(2, int(number**0.5) + 1):
if number % i == 0:
return False
return True
Цикломатическая сложность здесь равна 4, что указывает на четыре независимых пути через функцию.
Заключение
Эти метрики помогают разработчикам оценить сложность кода и выявить места для улучшений. Понимание и управление сложностью важны для создания более читаемого и поддерживаемого кода. Экспериментируйте с ними в своих проектах, чтобы улучшить качество вашего кода.
Оригинал