Las bibliotecas de JavaScript, como jQuery, combinan 'getters' y 'setters' en la interfaz de programación, por ejemplo:
$('element').css({'color','blue'});
establecerá el color o
$('element').css();
obtendrá el CSS para un elemento.
¿Existe un nombre para ese patrón y es una buena práctica usarlo en aplicaciones?
fuente
Se llama "sobrecarga de métodos" en idiomas OO o "sobrecarga de funciones" en idiomas que no son OO.
Si es o no una buena práctica es un tema de casi tanto debate como getters / setters vs. miembros públicos. Aquellos que están a favor y en contra probablemente se esfuercen en los idiomas que tenían esta característica o no, y se establecen en sus formas. Lo uso y me gusta la práctica por varias razones:
get
oset
al nombre del método agrega verbosidad.int
y uno paradouble
), cambiar el tipo en el LHS de una asignación (int x = foo.bar()
vs.double x = foo.bar()
) no requiere un cambio de código (barAsInteger()
vs.barAsDouble()
) en el lado derecho si la clase proporciona ambos. La desventaja de esto es que a veces puede ser difícil saber exactamente qué método se está llamando simplemente mirando el código.fuente
Dado que JavaScript no tiene propiedades reales (donde establecer un valor realmente puede ejecutar código), el patrón es uno que implementa el idioma de propiedad. (Incluso si lo llamas de otra manera).
Entonces, en los idiomas que implementan propiedades reales, debería hacer esto en su lugar:
Si usara el patrón de JavaScript en un lenguaje que maneje propiedades, estaría haciendo algo anormal. Eso probablemente no sería una buena idea. Maneje las propiedades de la forma en que el lenguaje debe manejarlas, para que no confunda a las otras personas que trabajan con usted.
fuente
Creo que estas buscando
properties
fuente
person.salary('10000')
operson.salary()
o similar.Estoy totalmente en contra de algo que, por una razón muy sencilla: una clase, método o función solo debería hacer una cosa - en mi opinión, y la combinación de la
getter
ysetter
método a romper esa regla. Como resultado:return
valor de la función varía según si se ejecuta el bloque getter o setter . Este puede simplemente llevarte a una pesadilla de mantenimiento. Su método debe devolver un solo tipo de datos / objeto en cualquier caso - o devoluciónnull
,false
o lanzará unaexception
en caso de error.Blrfl
respuesta.fuente