A complexidade ciclomática é uma das múltiplas medidas da complexidade do código. Por exemplo, no Visual Studio, o índice de manutenção depende de:
- Complexidade ciclomática,
- Profundidade de herança,
- Acoplamento de classe,
- Linhas do código IL (o código IL é o código fonte compilado na Linguagem Intermediária, que é então compilada por JIT).
Todas essas medidas, bem como outras medidas de complexidade, funcionam de alguma forma, mas nunca são a indicação absoluta de que o código fonte tem problemas de complexidade . Algumas medidas, como LOC, são conhecidas por serem totalmente sem sentido e enganosas; outros, como a complexidade ciclomática, são um pouco melhores, mas ainda têm problemas.
Isso se deve ao fato de que:
É muito complicado para um programa de computador saber o quão complexo o código fonte seria percebido pelo desenvolvedor .
Por exemplo, notei muitas vezes uma enorme queda no índice de manutenção ao refatorar o código do estilo de procedimento para o estilo funcional através do LINQ, transformando um bloco de código-fonte altamente ilegível em uma única expressão de encadeamento que era extremamente explícita.
Outro exemplo seria a reflexão de padrões de programação nas métricas. Freqüentemente, ao introduzir padrões de programação em seu código, você o torna menos complexo para um desenvolvedor (supondo que ele esteja familiarizado com esses padrões), mas o índice de manutenção diminui.
O código fonte pode ter diferentes formas.
A medição da complexidade ciclomática ou da profundidade da herança ou do acoplamento de classes é muito limitada para um aplicativo Web, porque, como você disse, a existência de HTML / CSS, JavaScript etc. e, como observado nos comentários, a existência de acesso ao banco de dados.
Essa limitação não existe apenas para aplicativos da web. Em aplicativos de desktop, por exemplo, e a complexidade do layout da interface do usuário (código XAML nos aplicativos Windows)? E o código gerado? Ou acesso ao banco de dados?