¿Considerais buena practica usar herencia múltiple?

Iniciado por 16BITBoy, 29 Octubre 2010, 20:55 PM

0 Miembros y 1 Visitante están viendo este tema.

16BITBoy

Me viene esta pregunta a la cabeza, ya que en c++ se puede pero otros lenguajes como Java, C# o Go no permiten.

¿Consideráis hacer esto buena practica? Y si lo consideráis afirmativo, ¿en que casos creéis que es oportuno?

Por momentos pienso que si necesito hacer herencia múltiple, algo va mal con el planteamiento que tengo del problema.

¿Que opinan ustedes?
Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".

[D4N93R]

Mira pues, son muy puntuales las veces que me ha tocado pensar en herencia multiple, pero, no es que sea mala práctica, sino que lleva muchas veces (cuando se hace a lo loco) a tener problemas de diseño y por ende errores en el código.

Entonces, te digo, siempre hay una forma de resolver este tipo de diseño y normalmente no es nada difícil.

Si explicas tu diseño le echamos un ojo a ver que se puede hacer ahí.

Littlehorse

Citar¿Consideráis hacer esto buena practica? Y si lo consideráis afirmativo, ¿en que casos creéis que es oportuno?
Si alguien te dice que la herencia múltiple es una mala practica, simplemente ignora el comentario. En el desarrollo de software no hay una regla que aplique para todo por tanto una respuesta que no este basada en tus objetivos y requerimientos no es una buena respuesta.
No se puede decir tampoco que es una buena practica, ya que depende del caso en particular para evaluar si es o no la mejor opción. Es una herramienta mas, que te puede servir para un determinado escenario y puede ser fatal para otro, depende de las características de cada uno.

Usualmente al usar herencia múltiple, la mayor desventaja suele ser el mantenimiento, debido a que generalmente al agregar un nuevo componente la cantidad de código a escribir es mayor.
No obstante, también tiene sus ventajas. La flexibilidad es una, ya que podes usar diferentes algoritmos para distintas combinaciones, cosa que en otros patrones de diseño es mas difícil. Las capacidades polimorficas, de ser necesarias, también son una clave importante.

Depende el caso en particular. Si no necesitas tanta flexibilidad pero queres disminuir el costo de mantenimiento, el patrón Bridge puede ser una mejor opción, y así podriamos estar todo el dia, por eso lo mejor es ver una situacion en particular y en base a ella discutir que puede ser mejor.

CitarPor momentos pienso que si necesito hacer herencia múltiple, algo va mal con el planteamiento que tengo del problema.
Pensar eso es un error, ya que para saberlo primero tenes que analizar las características del problema para poder efectuar un diseño adecuado.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.