Мы разрабатываем сложные технические системы. Как часто мы задумываемся о том, что сложность возрастает ударными темпами, а методы, которые мы применяем, остаются все те же? В учебнике по сложности, который в 2021 году выпустил международный совет по системной инженерии, обсуждаются вопросы сложности систем, и предлагается новый взгляд на системно-инженерные подходы, которые применяются для преодоления сложности. Цитата из книги: Простая система состоит из элементов, взаимосвязь между состояниями которых, будучи однажды замеченной, легко поддается пониманию...
Cyclomatic Complexity (СС) - это показатель сложности кода, который рассчитывается на основании графа, построенного по точкам принятия решений, опредеяющим разные пути исполнения кода. Формула для рассчёта СС: CC = E - N + 2*P, где:
E — количество рёбер,
N — количество узлов,
P — количество предикативных узлов (то есть узлов, содержащих условие). Точками принятия решений могут быть операторы if, when (в Kotlin), switch (в Java) и циклы. Чем их больше в одной функции и, чем больше их вложенноть, тем с больше и запутаннее у нас получится граф возможных путей исполнения кода этой функции...