Partilhar via


Métricas de código - Profundidade de 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 para Solução.

Exemplo de profundidade da herança 1

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

Exemplo de profundidade da herança 2

Note que quanto mais abaixo está o nó na árvore (Class2 neste 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 baseia-se em três pressupostos 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 maior potencial para reutilizar métodos herdados.

As suposições 1 e 2 dizem que ter um número maior para profundidade é ruim. Se fosse aí que terminasse, estaria numa boa posição; Contudo, a suposição 3 indica que uma maior profundidade é benéfica para a possível reutilização do código.

Analysis

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

  • Número baixo para profundidade

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

  • Número elevado para profundidade

    Um número elevado de profundidade implica mais potencial de reutilização de código através de herança, mas também maior complexidade com uma maior probabilidade de erros no código.

Análise de código

A análise de código inclui uma categoria de regras de manutenabilidade. Para obter mais informações, consulte Regras de manutenção. Ao usar a análise de código herdado, o conjunto de regras do Extended Design Guideline contém uma área de manutenção:

Profundidade dos conjuntos de regras de diretrizes de design de herança

Dentro da área de manutenibilidade há uma regra para herança:

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

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

Juntando tudo

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, valores baixos sugerem menos reutilização de código por herança a ser usada. Devido à falta de dados suficientes, não existe atualmente uma norma aceite para os valores DIT. Mesmo estudos feitos recentemente não encontraram dados suficientes para determinar um número viável que pudesse ser usado como um número padrão para esta métrica de Shatnawi. Embora não haja evidência empírica para apoiá-lo, 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). A Metrics Suite for Object Oriented Design (IEEE Transactions on Software Engineering, Vol. 20, No. 6). Consultado 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 CK para Complexidade de Projeto Orientado a Objetos: Implicações para Defeitos de Software (IEEE Transactions on Software Engineering, Vol. 29, No. 4). Consultado 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 das Métricas orientadas a objetos em sistemas open-source (IEEE Transactions on Software Engineering, Vol. 36, No. 2).