Compartilhar via


Métricas de código – Profundidade da herança (DIT)

Neste artigo, você aprenderá sobre uma das métricas projetadas especificamente para análise orientada a objetos: Profundidade da Herança. A profundidade da herança, também chamada de profundidade da árvore de herança (DIT), é definida como "o comprimento máximo do nó até a raiz da árvore" CK. Você pode ver isso com um exemplo simples. Crie um novo projeto de Biblioteca de Classes e, antes de escrever qualquer código, calcule as métricas de código escolhendo Analisar > Calcular Métricas de Código da Solução.

Exemplo de profundidade da herança 1

Como todas as classes herdam de System.Object, a profundidade é 1 no momento. Se você herdar dessa classe e examinar a nova classe, poderá ver o resultado:

Exemplo de profundidade da herança 2

Observe que quanto menor o nó na árvore (Class2 nesse caso), maior a profundidade da herança. Você pode continuar a criar filhos e fazer com que a profundidade aumente o quanto quiser.

Assumptions

A profundidade da herança é baseada em três suposições fundamentais CK:

  1. Quanto mais profunda uma classe na hierarquia, maior o número de métodos que ela provavelmente herdará, o que torna mais difícil prever seu comportamento.

  2. Árvores mais profundas envolvem maior complexidade de projeto, uma vez que mais classes e métodos estão envolvidos.

  3. Classes mais profundas na árvore têm um potencial maior para reutilizar métodos herdados.

As suposições 1 e 2 dizem que ter um número maior para profundidade é ruim. Se foi aí que terminou, você estaria em boa forma; no entanto, a suposição 3 indica que um número maior para profundidade é bom para uma possível reutilização de código.

Temo de

Veja como você lê a métrica de profundidade:

  • Valor baixo para profundidade

    Um número baixo para profundidade implica menos complexidade, mas também a possibilidade de menos reutilização de código por meio da herança.

  • Número alto para profundidade

    Um número alto para profundidade implica mais potencial para reutilização de código por meio de herança, mas também maior complexidade com maior probabilidade de erros no código.

Code Analysis

A análise de código inclui uma categoria de regras de manutenção. Para obter mais informações, consulte Regras de Manutenibilidade. Ao usar a análise de código herdada, o conjunto de regras da Diretriz de Design Estendido contém uma área de manutenção:

Conjuntos de regras de diretrizes de design para profundidade de herança

No âmbito da manutenibilidade, existe uma regra para herança:

Profundidade da regra de manutenção de herança

Essa regra emite um aviso quando a profundidade da herança atinge 6 ou mais, portanto, é uma boa regra para ajudar a evitar herança excessiva. Para saber mais sobre a regra, consulte CA1501.

Juntando as peças

Valores altos para DIT significam que o potencial de erros também é alto, valores baixos reduzem o potencial de erros. Valores altos para DIT indicam um maior potencial de reutilização de código por meio de herança, enquanto valores baixos sugerem menos reutilização de código através da herança. Devido à falta de dados suficientes, não há nenhum padrão atualmente aceito para valores DIT. Mesmo estudos feitos recentemente não encontraram dados suficientes para determinar um número viável que poderia ser usado como um número padrão para essa métrica Shatnawi. Embora não haja nenhuma evidência empírica para apoiá-la, vários recursos sugerem que um DIT em torno de 5 ou 6 deve ser um limite superior. Por exemplo, veja https://www.devx.com/architecture-zone/45611/.

Citações

CK

Chidamber, S. R. &Kemerer, C. F. (1994). Um Conjunto de Métricas para Design Orientado a Objetos (Transações IEEE em Engenharia de Software, Vol. 20, No. 6). Recuperado em 14 de maio de 2011, do site da Universidade de Pittsburgh: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Krishnan

Subramanyam, R. &Krishnan, M. S. (2003). Análise empírica de métricas de CK para complexidade de design orientado a objetos: implicações para defeitos de software (Transações IEEE em Engenharia de Software, Vol. 29, nº 4). Recuperado em 14 de maio de 2011, originalmente obtido do site da Universidade de Massachusetts Dartmouth https://ieeexplore.ieee.org/abstract/document/1191795

Shatnawi

Shatnawi, R. (2010). Uma investigação quantitativa dos níveis de risco aceitáveis de métricas orientadas a objetos em sistemas de código aberto (IEEE Transactions on Software Engineering, v. 36, n. 2).