← Ir a portada

Getters y setters son el mal

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?

Apuntes relacionados:

8 Respuestas a “Getters y setters son el mal”

  1. 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

  2. Rub dice:

    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

  3. Jose Alberto dice:

    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.

  4. PuppetMaster dice:

    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…

  5. 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!

  6. gloria franco dice:

    necesito q por favor me manden toda la informacion de java y php

  7. [...] Todos los atributos son privados y no se usan métodos “setters” para evitar el efecto de “atributo público” [...]

  8. [...] 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) [...]

Deja un comentario