SOLID, RCCASS y otros sucedáneos
Por lo general, cuando se habla de orientación a objetos se termina hablando de patrones.
Y cuando se habla de patrones, la gente suele hablar de muchos de ellos, pero por lo general tiende a hablar casi siempre y de forma única, de SOLID y sus cinco principios, como si de un mantra se tratara.
Sin embargo, esa misma gente suele dejar en el aire otros principios.
Sin entrar en detalle de la ingente cantidad de principios que hay, y después de mencionar SOLID, me apetece mencionar uno de los principios más olvidados, el que denominamos como RCCASS.
Robert C. Martin, conocido también como Rob C. Martin, definió 11 principios.
Estos son:
SOLID aglutina 5 principios, cuyas letras forman un acrónimo mnemónico que introdujo Robert C. Martin de los 5 principios que lo forman a principios de la década del año 2000.
SOLID está enfocado al desarrollo puro del código en cuanto a sus clases. El diseño de clases para ser más precisos.
SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion).
RCCASS por su parte, posee 6 principios que busca la organización, estabilidad y reutilización fundamentalmente. Son principios enfocados en los paquetes y su uso y distribución.
Y es que RCCASS tiene relación directa con la arquitectura y con el diseño, y por eso, creo yo que son menos conocidos que SOLID.
De hecho, los programadores suelen centrarse en SOLID pero obvian RCCASS por falta de interés o por desconocimiento, o por caer por lo general dentro de una parcela de responsabilidad diferente.
RCCASS se podría dividir a su vez en RCC y ASS.
RCC tiene que ver con la cohesión de paquetes, y nos indica lo que habría que poner dentro de esos paquetes.
ASS tiene que ver con el acoplamiento entre los paquetes, y tiene que ver sobre las métricas que evalúan la estructura de los paquetes dentro de un sistema.
Pero en mi opinión, todos los programadores deberíamos conocer los 11 principios para al menos saber en qué consisten.
Los principios de RCCASS son los siguientes:
- Reuse Release Equivalency Principle
- Common Reuse Principle
- Common Closure Principle
- Acyclic Dependencies Principle
- Stable Dependencies Principle
- Stable Abstractions Principle
Si puedo en otras entradas, hablaré algo más sobre ellos.
De momento, mi intención es dejar encima de la mesa estos principios explicando por encima dónde ubicarlos, y para que si alguien los escucha por Internet o en un grupos de usuarios u otro foro, sepa entender de qué se está hablando.
¡Happy Coding!