Allen Holub escribió “Nunca deberías usar las funciones get / set”, ¿está en lo correcto?

Allen Holub escribió lo siguiente,

No puedes tener un progtwig sin un acoplamiento. No obstante, puede minimizar el acoplamiento considerablemente siguiendo servilmente los preceptos OO (orientados a objetos) (lo más importante es que la implementación de un objeto debe estar completamente oculta de los objetos que lo utilizan). Por ejemplo, las variables de instancia de un objeto (campos de miembro que no son constantes), siempre deben ser privadas. Período. Sin excepciones. Nunca. Lo digo en serio. (En ocasiones puede usar métodos protegidos de manera efectiva, pero las variables de instancia protegidas son una abominación).

Lo cual suena razonable, pero luego continúa diciendo:

Nunca debe usar las funciones get / set por la misma razón: son formas demasiado complicadas de hacer que un campo sea público (aunque las funciones de acceso que devuelven objetos completos en lugar de un valor de tipo básico son razonables en situaciones donde el objeto devuelto la clase es una abstracción clave en el diseño).

Lo cual, francamente, me parece una locura.

Entiendo el principio de ocultación de información, pero sin accesoadores y mutadores no podrías usar Java beans en absoluto. No sé cómo seguiría un diseño de MVC sin acceso en el modelo, ya que el modelo no puede ser responsable de mostrar la vista.

Sin embargo, soy un progtwigdor más joven y aprendo más sobre Diseño Orientado a Objetos todos los días. Quizás alguien con más experiencia pueda opinar sobre este tema.

Artículos de Allen Holub como referencia

  • Por qué se extiende el mal
  • Por qué los métodos Getter y Setter son malvados

Preguntas relacionadas:

  • Java: ¿Son malos los Cazadores y Setters?
  • ¿Es realmente así de malo no usar setters y getters?
  • ¿Las funciones get y set son populares entre los progtwigdores de C ++?
  • ¿Deberías usar las propiedades de acceso dentro de la clase, o solo desde fuera de la clase?