Ir al contenido principal

Métodos Comunistas y Propiedades Capitalistas

No, este no es un artículo sobre política, sigue siendo sobre programación orientada a objectos (OOP), específicamente sobre métodos públicos y propiedades privadas, de allí el título.

Todo surge por un comentario que me hizo un querido amigo al leer mi publicación sobre las reglas pigbar de programación. El me comentó:

"Mr. Bladi, entiendo sus reglas acerca de que las propiedades deban ser privadas por aquello del encapsulamiento, ¿pero que todos los métodos deban ser públicos? eso me cuesta entenderlo, eso implica que no existen métodos privados, y yo debo saber lo que un objeto hace sin preocuparme del cómo, por lo que esos métodos privados pueden ser útiles."


... largo es el camino del aprendizaje ... pensé ... jajaja

y procedí a explicarle.

Le dije:
Tienes razón y estás equivocado. Todo al mismo tiempo como el gato de schrödinger.


Tienes razón porque el concepto de encapsulamiento implica que se guarda o encapsulan tanto las propiedades como los métodos en una clase, escondiendo los detalles de la implementación, y eso está súper bien.

Pero, y siempre hay un pero, estás equivocado por que el problema con los métodos privados es que esa funcionalidad que escondes dentro de las entrañas inescrutables de un método privado, no puede ser compartida por otras clases o partes del programa. En otras palabras, sí necesitas o llegas a necesitar que ese comportamiento se realice en otra parte del sistema, vas a tener que recurrir a algunos recursos poco recomendados como son el tristemente celebre Copy & Paste o recurrir a librerías con clases utilitarias, las cuales también son  poco recomendadas y las considero ofensivas en la OOP.

¿Me explico?

Por otra parte ese comportamiento, funcionalidad o utilidad del método escrito en forma privada, no forma parte de ningún contrato por el que deba trabajar la clase, no forma parte de ninguna interface, por lo que no podemos trabajarlo usando ese valioso y sagrado mecanismo de programar para una abstracción, para una interface o para un contrato.

La única forma de acceder esa funcionalidad es dentro de la clase misma donde nunca podrá ser compartida y, en mi experiencia, en la programación de sistemas no conozco aún una funcionalidad tan peculiar, tan única en si misma, que no merezca ni pueda ser compartida o generalizada dentro de una abstracción.

De acá se desprende el axioma: Todo método privado, TODOS; son candidatos a una abstracción, a una nueva clase, y deben ser migrados a esa abstracción.

Es por ello que impongo férreamente , con disciplina dura, el uso de los antes mencionados principios en lo referente a la visibilidad de propiedades y métodos

Por su parte, las propiedades deber ser privadas y en lo posible nunca expuestas al mundo exterior. Ellas forman parte del estado del objeto y son sus elementos mas sagrados. Con ello quiero reflejar que todos los objetos deberían ser inmutables para proteger al sistema de las consecuencias nefastas que derivan del control o gestión sobre los cambios de estados en las clases.

Es por ello que manifiesto que no deben existir setters, que las propiedades deben ser final y que los getters no son recomendados. Todo sea por preservar la inmutabilidad de la clase, favorecer el encapsulamiento y el ocultamiento de la implementación y, por qué no, de la estructura interna del objeto.



Comentarios

  1. Good maestro Miyagi. Lo leí todo, definitivamente me gusta la programación.

    ResponderEliminar
  2. Me contenta que lo hayas leído mi estimado!!! bienvenido siempre ha este mundo de la OOP!!

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

El Melange todavía corre

Ese era el estribillo de un capítulo de unas de mis series favoritas de la infancia, Meteoro o Speed Racer. En ese capítulo un auto “fantasma” el X-3, aparecía de imprevisto y dejaba a todos asombrados con su rendimiento y prestaciones y volvía a desaparecer. Traigo ese episodio a colación puesto que recientemente sostuve una amena charla con un querido amigo, en la que el me manifestaba como los Mainframes habían muerto, o mejor dicho, el concepto de la computación distribuida basada en Mainframes había desaparecido. Para variar, yo no estuve de acuerdo, y le dije que por el contrario, el modelo de computación basado en Mainframes está mas vigente que nunca. Estos fueron mis argumentos:

Primeros pasos con Camunda BPM – Modelando un Proceso BPMN 2.0

Tenemos entre manos la tercera publicación de nuestra serie sobre la Plataforma de BPM de Camunda .  El día de hoy vamos, por fin, a empezar a modelar o construir nuestro primer proceso sencillo en notación BPMN 2.0. Para ello vamos a usar el modelador o editor que ya hemos instalado en nuestra primera publicación , y vamos a guardarlo en la sección de recursos del proyecto Maven Java que configuramos en la segunda publicación . Así que, como ya es costumbre, manos a las sobras…

Primeros pasos con Camunda BPM...

... e impresiones. En el competido mercado de las Soluciones de Business Process Management(BPMS) se encuentran diversos fabricantes con productos u opciones de diversa calidad. Por mi foco de carrera o área de trabajo me ha tocado prácticamente trabajar con la gran e inmensa mayoría de todas estas soluciones de software, desde las más sencillas y económicas, las más populares y conocidas, las comerciales, las de código abierto, y hasta las más costosas, “worldclass”, de estas soluciones de BPM.