Sencillamente no tienen idea de lo que están hablando...
Los getters y setters son sumamente útiles por muchos motivos, los mas
básicos son que AYUDAN a la legibilidad, ya que si yo pongo
this.getAlgo().toString, claramente estoy haciendo referencia al atributo
"algo" de mi objeto, en cambio si pongo algo.toString, uno a simple vista no
sabe si ese "algo" es un atributo de la clase, es una variable local, me lo
pasaron por parámetro es un método que devuelve _algo_ , etc.
Por otro lado, si hubieran trabajado en alguna aplicación medianamente
grande, sabrían que muchas veces los atributos de clases pueden necesitar
ser auditados, sincronizados, o disparar cualquier tipo de acción cada vez
que se los utilice o cada vez que se cambie el valor. Si se respetara el uso
de getters y setters, solo tengo que agregarle algún aspecto a la clase que
reaccione ante la llamada del getter o setter y haga su magia.
En otro ejemplo, supongamos una clase A que contiene un atributo b que es
una instancia de una clase B que a su vez tiene una colección de C. Es
importante saber que algunos frameworks, al levantar una instancia de A no
hidratan todos sus atributos (para no ocupar memoria ni tiempo buscando en
la base cosas, que quizás nunca uses), y si no accedemos a estos por los
getters, el framerowk no se entera que lo accedimos, nunca lo hidrata y nos
va a decir que tenemos un null si hacemos a.b cuando en la base de datos si
teníamos bs que tenían cs. Una vez mas, magia de aspectos.
por último, lo que hoy es un atributo de la clase mañana puede llegar a ser
un cálculo o por alguna razón habría que evitar un null por salida, en ese
caso, solo se toca el getter sin necesidad de nada mas.
Creo que muchas personas podrían llegar a agregar mucho a esta lista que
acabo de escribir, pero la verdad es que el nivel de soberbia, agresividad e
ignorancia que se vió en este hilo hace que los que tienen cosas
interesantes que decir se abstengan de tirarle perlas a los chanchos.
Quizás sea bueno aclarar que no leí el hilo anterior, pero me interesó el
tema de getters y setters porque es algo que el 99% de los juniors que vi
pasar a mi lado (incluyéndome hace años atrás) tenían el mismo concepto
erróneo.
Gracias totales
Abel.-
PD: también usen this. cada vez que puedan. :D
El día 24 de abril de 2008 0:43, Ricardo Markiewicz <[EMAIL PROTECTED]>
escribió:
> 2008/4/24 Leandro Lucarella <[EMAIL PROTECTED]>:
> > Pablo Martín Viva, el 23 de abril a las 23:38 me escribiste:
> > [snip]
> > > Entiendo que dejar todo publico esta mal, hasta cierto punto
> porque se
> > > hace cagadas por eso, pero tampoco tener metodos de acceso a
> dichos
> > > atributos hace que se programe mal, hay que saber usarlos como
> todo.
> >
> > Lo de los getters y setters, es para mí, un pedo mental que inventó
> Java,
> > por ser un lenguaje excesivamente pobre.
> >
> > En cualquier lenguaje decente, podés tener lo que comunmente se conoce
> > como "propiedad", que es algo así como sintaxis
> indistinta/intercambiable
> > para llamar métodos como si fueran atributos, entonces no necesitás
> andar
> > impregnando todo tu código de getters y setters, usás atributos (a
> menos
> > que realmente necesites usar una función para hacer alguna validación)
> > porque estás tranquilo que en el futuro podés cambiar tu atributo por
> un
> > par de funciones y no la *interfaz* de tu clase no cambia.
> >
> > Creo que el único lenguaje OO más o menos popular que no soporta esto
> es
> > Java (sé que, al menos, Pyton, PHP, Ruby, C++, C# y D lo soportan de
> una
> > forma u otra).
> >
>
> de hecho, tener :
>
> class A {
> private int a;
>
> public void setA(int i) { a = i; }
> public int getA() { return a; }
> }
>
> Es lo mismo que
>
> class A {
> public int a;
> }
>
> Distinto seria si es necesario guardar el doble del valor asignado,
> por ejemplo, donde claramente el segundo ejemplo fallaria por dejar la
> responsabilidad al programador, cuando la responsabilidad es de la
> clase. Igualmente el setter es una cagada como practica de
> programacion, porque el codigo queda feo :)
>
>
> --
> --
> ¡Falta Uno! - http://www.falta-uno.com.ar/
> Ricardo Markiewicz
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
--
Abel Sebastián Fillol
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion