Parte IV de la entrevista con Anders Hejlisberg (Español (Spanish))

Parte IV de la entrevista con Anders Hejlisberg

Wednesday, 12 May 2004

//

1 minute read

Vinculado con los otros 3, Aquí está la parte 4 , cosas muy interesantes sobre los métodos virtuales en C# Esto es muy interesante (bueno, ¡creo que lo es!)... aquí hay una sección sobre 'contratos' y métodos virtuales... ¡el bit de Java es tan cierto!

Bill Venners: ¿Qué quiere decir con contrato entrante y saliente?

Anders Hejlsberg: El contrato entrante es lo que utilizo cuando llamo a un método. Me permite razonar sobre lo que estoy obligado a hacer antes de llamar al método y lo que ha pasado después de que el método regrese. El contrato saliente es lo que utilizo cuando sobrescribo un método. Si usted mira a la mayoría de API son realmente muy malos en la documentación de lo que se supone que debe hacer cuando usted anula un método virtual: ¿Cuáles son las invariantes antes de que se llame? ¿Qué debería ser cierto después? ¿Qué métodos no puede llamar desde su implementación? Y así sucesivamente. Creo que es muy peligroso decir que por defecto todos los métodos tienen aspectos entrantes y salientes. Es peligroso confiar en todos para escribir una buena documentación acerca de cuándo anular y cuáles son los invariantes cuando se sobrevuela.

Puedo demostrarles un problema de versionamiento del mundo muy real, uno que de hecho vemos ahora por experiencia con Java. Cada vez que envían una nueva versión de las bibliotecas de clase Java, se produce una ruptura. Cada vez que introducen un nuevo método en una clase base, si alguien en una clase derivada tenía un método de ese mismo nombre, ese método es ahora una anulación—excepto si tiene un tipo de retorno diferente, ya no compila. El problema es que Java, y también C++, no captura la intención del programador con respecto a virtual.

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.