0

Como avaliar o código fonte?

Mateus Silva
Mateus Silva

Oi, pessoal. Vim trazer algo que aprendi e espero que isso agregue conhecimento para vocês também.


O artigo é focado no uso de métricas que possam mensurar a complexidade do seu código fonte.


Elas também são úteis para encontrar trechos do código que poderão ser potenciais problemas, poder ter um maior controle sobre o design e ainda guiar o desenvolvimento e pontos para refatoração. Claro que elas não são perfeitas, mas trazem bons indícios para locais que merecem atenção.


As métricas podem ser divididas em 3 grandes grupos:

  • estruturais;
  • design;
  • orientadas a objetos.


Métricas de design


Esse artigo tem um foco para as métricas de design, essas podem avaliar o tamanho, acoplamento e a coesão do seu código.


Tamanho


As métricas de tamanho avaliam a extensão de seu código. Apesar de parecer meio óbvio é um métrica que auxiliar a encontrar code smells.


Alguns exemplos são:

  • Número de Pacotes (avalia em nível de sistema);
  • Número de Classes (avalia em nível de pacote);
  • Número de Métodos ou Atributos (avalia em nível de classe);
  • Número de Linhas de Código (avalia em nível de método).


Acoplamento


Servem para indicar a quantidade e/ou a força de dependência entre partes do seu software. Um código muito acoplado dificulta no momento da manutenção, além do que tais partes devem ser projetadas para lidar com esse acoplamento e/ou precisam ser refatoradas.


Alguns exemplos são:

  • Coupling Between Objects (acoplamento entre objetos) - avalia o total de classes que uma classe A "usa" mais quantas classes usam a classe A.
  • Depth of Inheritance Tree (profundidade da árvore de herança) - por exemplo a classe A herda a classe B que herda da classe C. Quanto maior a profundidade maior o acoplamento, pois a modificação da classe C afetará B e A.


Coesão


Avalia quanto um módulo do seu sistema é dedicado a apenas uma responsabilidade.


Um exemplo é:

  • Lack of Cohesion in Methods (falta de coesão em métodos) - avalia os métodos que acessam pelo menos um atributos em comum ou um chama o outro, contra métodos que não acessam atributos em comum e nem um chama o outro. Esse método auxilia a identificar a necessidade da divisão da classe em uma ou mais classes.


Links para artigos anteriores sobre Qualidade de Software:


  • Ocultamento de Informação e Information Leakage: https://web.digitalinnovation.one/articles/ocultamento-de-informacao-e-information-leakage?back=%2Farticles&page=1&order=oldest


  • O porquê devemos nos preocupar com a qualidade do software: https://web.digitalinnovation.one/articles/o-porque-devemos-nos-preocupar-com-a-qualidade-de-software?back=%2Farticles&page=1&order=oldest


Link para artigo anterior sobre Rede de Computadores e Internet:

  • DNS - Como Digitar www.digitalinovation.one faz você conseguir se comunicar com a DIO: https://web.digitalinnovation.one/articles/dns-como-digitar-wwwdigitalinovationone-faz-voce-consegue-se-comunicar-com-a-dio?back=%2Farticles&page=1&order=oldest


  • Camadas da Internet e as suas Funções: https://web.digitalinnovation.one/articles/camadas-da-internet?back=%2Farticles&page=1&order=oldest


Fontes:

  • LANZA, M.; MARINESCU, R. Object-Oriented Metrics in Practice. Springer, 2006. 
  • https://objectscriptquality.com/docs/metrics/lack-cohesion-methods-lcom4
  • http://www.arisa.se/compendium/node101.html
0
11

Comentários (0)

None

Brasil