Arquivo
Utilizando o Code Analisys – Maintainability Rules
Salve, Salve galerinha.
Conforme prometido no artigo anterior, estou postando uma explicação para um grupo de regras.
O grupo escolhido é “Maintainability Rules” ou “Regras de Manutenibilidade”.
Na minha opinião, as “Regras de Manutenibilidade” são as mais importantes e interessante que encontramos no Code Analysis. Com elas você poderá verificar a complexidade do código, verificar quais códigos são difíceis de dar manutenção ou qual deles dificultam leitura.
Segue abaixo uma tabela com as informações mais importantes.
CheckId | Descrição | Explicação | Índice no Code Metrics |
CA1500 | Variable names should not match field names | Nomes de variáveis da classe não devem coincidir com nomes de parâmetros. | |
CA1501 | Avoid excessive inheritance | Evite o excesso de heranças. No máximo, utilize 4 níveis na hierarquia. | |
CA1502 | Avoid excessive complexity | Evite o excesso de complexidade | Cyclomatic Complexity*¹ <= 25 : Aceitável |
CA1504 | Review misleading field names | Nomenclatura de campos dificultam a leitura. Como: Instancias de classe e variáveis não static (Shared VB) não devem começar com “s_”. Instancias de classe e variáveis static(Shared VB) não devem começar com “m_”. | |
CA1505 | Avoid unmaintainable code | Evite código com baixo índice de manutenibilidade. Tente dividi-lo em um número maior de métodos específicos. | Maintainability Index (MI)*² 0~10 : Ruim 10~20: Moderada >=20: Boa manutenibilidade |
CA1506 | Avoid excessive class coupling | Evite o excesso associação de classes com tipos e namespaces diferentes. Procure utilizar tipos e métodos com um baixo grau de acoplamento. | Class Coupling*³ >= 40: Ruim; 40~30: Moderada; <= 30: Boa manutenibilidade |
Informações adicionais
Cyclomatic Complexity*¹ : A complexidade ciclomatica mede o número de fluxos independentes através do método determinadas através do número número de ramificações condicionais.
A fórmula de cálculo encontrada no MSDN é a seguinte: Cyclomatic Complexity = nº arestas – nº nós +1
aresta: linha entre nós.
nós: ponto de ramificação lógica.
Complicado né? Para simplificar podemos pensar da seguinte forma. Cyclomatic Complexity = nº (if, while, do, case no switch(select VB))
Exemplos : http://msdn.microsoft.com/en-us/library/ms182212.aspx
Quando a complexidade Ciclomática não se aplica: Quando seu método tem apenas um switch(select no VB) com vários case. Ou quando não se pode dividir o método.
Maintainability Index (MI)*²: O “índice de Manutenibilidade” é calculado utilizado as seguintes métricas.
– Linhas de código.
– Volume do programa. É a medida da dificuldade de compreensão baseado no número de operadores e operandos no código
– Complexidade Ciclomatica.
Quando o índice de Manutenibilidade não se aplica. Quando seu método tem apenas um switch(select no VB) com vários case. Ou quando não se pode dividir o método.
Class Coupling*³: O índice de “Classes acopladas” é calculado a partir da somatória de classes altamente acopladas e de diferentes referencias utilizadas em seu código.
Quando a complexidade Ciclomática não se aplica: Ainda não encontrei um caso em que não se aplica.
Fonte: http://msdn.microsoft.com/en-us/library/ms182211.aspx
E mais uma vez… Espero que o artigo tenha sido claro, objetivo e prático para você já poder começar a usar.
Francisco Gonçalves