Cognitive Complexity - Когнитивная сложность: новый способ измерения понимаемости кода

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, что указывает на четыре независимых пути через функцию.

Заключение

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


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE