Getters y setters son el mal
18-07-2008
Luis Artola
Clasificado como:
DESARROLLO DE SOFTWARE ,
WEBDEV ,
Es interesante la reflexión que hace Greg Jorgensen en su blog. Y es que hay mucho programador con la costumbre de crear getters y setters para todos los atributos de su clase sin plantearse si son necesarios o no. ¿Qué diferencia habría entonces con hacer esos atributos públicos y no privados?
Quizá resulte muy radical ver la implementación de un getter como un “fallo de encapsulación” pero si es verdad que, idealmente, una clase debería tener una serie de métodos públicos, ningún getter/setter, y todos los atributos privados… así desconoceríamos la representación real de los datos y sólo tendríamos acceso al comportamiento (máxima encapsulación).
¿Hasta qué punto atendéis a la encapsulación en vuestros diseños?
Es cierto, vi algunos sistemas Open Source, que hacian este tipo de practicas un lema, igual tambien se pueden usar los metodos Magicos
__get y __set para ahorrarnos este problema.Aunque seguimos teniendo el problema de la falta de encapsulamiento
Lo que yo odio es lo sucio que llega a ser el código de un programador fanático de esto. Miles de líneas con getters y setters y líneas kilométricas de código que si getEsto.getOtro.getSuP***M*** xD es un infierno
Me ha hecho gracia este artículo. Hace ya dos años planteaba lo mismo en mi blog: http://softinspain.com/desarrollo/settersgetters-para-todo/
Un saludo.
Yo opino que son necesarios estos metodos, sobretodo si se trabaja con jsp y etiquetas personalizas, pero claro todo en exeso es malo, hay que plantearse primero para q son utiles estos metodos y si es posible encapsular aun mas metodos y atributos. La vieja excusa es la seguridad…
Hola Luis
Solo te escribía por que he abierto un wiki para la traducción del manual oficial de Zend Framework http://www.zfdes.com/ y sería genial que puedas publicarlo para que la comunidad pueda apoyar.
Aquí puedes ver los envíos que ya se hicieron a Zend
http://framework.zend.com/svn/framework/standard/trunk/documentation/manual/es/
muchas gracias
Saludos!
necesito q por favor me manden toda la informacion de java y php
[...] Todos los atributos son privados y no se usan métodos “setters” para evitar el efecto de “atributo público” [...]
[...] Parte I Enlaces relacionados: POO UML Patrón de diseño “Facade” Relaciones UML “getters” y “setters” Cursos Python Compartilo/Guardalo También te puede InteresarABM con Python – Parte I (0) [...]