¿Métodos privados?
Me he encontrado con que el componente mx.controls.ProgressBar del SDK de Flex 3 tiene un bug. El bug se da en el método updateDisplayList(), que en un momento dado intenta acceder a una propiedad que es nula. El típico Cannot access a property or method of a null object reference ….
Llegado a este punto me he dicho:
- vale, no pasa nada. Creo una subclase de ProgressBar, sobreescribo updateDisplayList() y me aseguro de que la propiedad en cuestión no se acceda con valor nulo. Parece simple…
Pues no… resulta que el método updateDisplayList(), un método con visibilidad protected, durante su ejecución hace una llamada a un método privado y además utiliza propiedades privadas durante su ciclo de vida, lo cuál inutiliza totalmente el que el método sea sobrescribible ya que a la práctica no lo es.
Yo me pregunto… ¿tiene sentido hacer esto? Yo opino que es un error de diseño del método. Si expones un método a las subclases tienes que tener cuidado de que pueda ser sobrescrito.
Y ya poniéndonos fuertes… ¿Tiene sentido utilizar propiedades privadas en un SDK? Nunca sabes lo que los usuarios van a hacer con tus APIs, así que no te confíes y define la visibilidad más restrictiva con protected.
Vaya, digo yo…











