Tal y como afirman Kas Thomas, Joshua Bloch o Bernard Sumption, la herencia viola el principio de encapsulación y tiende a convertirse en un anti-esquema (antipattern) ya que requiere que los hijos conozcan el funcionamiento de los padres. Además la polución en las clases heredadas resulta evidente: la clase JMenu de java contiene 433 métodos, la inmensa mayoría heredados. Un cambio en un método ancestro puede romper los hijos de forma inesperada. Y para muestra, un botón de la propia documentación de Java para la clase
Properties:Puesto quePropertieshereda deHashtable, los métodosputyputAllpueden ser aplicados también a un objetoProperties. Su uso, sin embargo, está fuertemente desaconsejado ya que permiten que el llamante inserte entradas cuyas claves o valores no seanStrings. El métodosetPropertydebe usarse en su lugar. Si los métodosstoreosaveson llamados sobre un objetoProperties"comprometido" que contiene una clave o valor que no seaString, la llamada fracasará.
Si Brendan Eich optó por los prototipos fue por algo. Pero sus motivaciones son totalmente desconocidas para toda esa horda de programadores (provenientes de Java en su mayor parte) que insisten en que Javascript soporte este imperfecto o polémico mecanismo. Gosling, Eich, Bloch, Holub, saben de lo que hablan.
No hay comentarios:
Publicar un comentario