DÊVIDA - HERAN?A
Olá a todos!
Vocês já devem ter visto no menu Analyze... Calculate Code Metrics que existe um parâmetro na janela de resultados chamado [Ô]Depth of Inheritance[Ô], que seria a profundidade máxima da sua herança.
Se você passar o cursor por cima dessa coluna, vai aparecer um tooltip dizendo o seguinte [Ô]Valores mais baixos são melhores[Ô]...
Daà vem a minha dúvida!
Por que são melhores? A herança consome tanto recurso assim? Pelo que li, no meu entendimento, funciona da seguinte forma:
Se você herda um objeto 1000 vezes, eles terão grupos de dados diferentes, porém, os métodos em si não se replicam na memória. Trata-se do mesmo método...
Então por que esse [Ô]Depth of Inheritance[Ô] existe?
Outra pergunta: Eu tenho costume de usar herança em controles apenas para agrupar um conjunto de propriedades. Exemplo: Herdo de um Label e no construtor passo o tamanho da fonte, tipo de fonte, forecolor, backcolor, etc... Porque é um label que vai ser usado como padrão no meu projeto. Isso seria errado?
Agradeço mesmo quem puder tirar essas dúvidas.
Abraços!
Vocês já devem ter visto no menu Analyze... Calculate Code Metrics que existe um parâmetro na janela de resultados chamado [Ô]Depth of Inheritance[Ô], que seria a profundidade máxima da sua herança.
Se você passar o cursor por cima dessa coluna, vai aparecer um tooltip dizendo o seguinte [Ô]Valores mais baixos são melhores[Ô]...
Daà vem a minha dúvida!
Por que são melhores? A herança consome tanto recurso assim? Pelo que li, no meu entendimento, funciona da seguinte forma:
Se você herda um objeto 1000 vezes, eles terão grupos de dados diferentes, porém, os métodos em si não se replicam na memória. Trata-se do mesmo método...
Então por que esse [Ô]Depth of Inheritance[Ô] existe?
Outra pergunta: Eu tenho costume de usar herança em controles apenas para agrupar um conjunto de propriedades. Exemplo: Herdo de um Label e no construtor passo o tamanho da fonte, tipo de fonte, forecolor, backcolor, etc... Porque é um label que vai ser usado como padrão no meu projeto. Isso seria errado?
Agradeço mesmo quem puder tirar essas dúvidas.
Abraços!
Citação:Por que são melhores? A herança consome tanto recurso assim?
Não é por uma questão de recursos, e sim porque quanto mais profundo ela está, muito mais acoplado o seu código estará, dificultando a manutenção. Se por ventura você vier fazer uma modificação em uma das classes mais baixas na hierarquia, essa mudança afetará todo o restante. é por isso que os livros recomendam o uso de composição e interfaces no lugar da herança, pois deixa o código mais flexÃvel.
Entendi Jaba.
Obrigado!
Mas se por um lado o forte acoplamento é a grande desvantagem dele, acredito que por outro, é a maior vantagem (O fato das modificações refletirem nas subclasses).
Fico agradecido novamente.
Se não houver mais nenhum comentário, estarei fechando o tópico mais tarde.
Abraços!
Obrigado!
Mas se por um lado o forte acoplamento é a grande desvantagem dele, acredito que por outro, é a maior vantagem (O fato das modificações refletirem nas subclasses).
Fico agradecido novamente.
Se não houver mais nenhum comentário, estarei fechando o tópico mais tarde.
Abraços!
A vantagem é pelo fato de tornar o código mais produtivo, facilitando o lado do programador no quesito desenvolvimento. Porém, quando o software já está em nÃvel de produção as manutenções se tornam inevitáveis. Com isso em mente, se uma regra de negócio muda, muitas partes de seu código se quebrará por causa do forte acoplamento. Sendo assim, a possibilidade de serem introduzidos novos bugs se torna muito maior. Nem sempre devemos optar por aquilo que nos traz mais facilidade no desenvolvimento, o mais importante é evitar que o código quebre em muitas partes de nosso código, evitando ao máximo ser pego de surpresa por algo que se propagou e não demos conta. Por tanto, até mesmo o uso da herança deve ser muito bem pensando por quem quer ter um projeto de qualidade.
Valeu Jaba.
Bom final de semana!
Bom final de semana!
Tópico encerrado , respostas não são mais permitidas