leanmind logo leanmind text logo

Blog

Código Sostenible

Cómo escribir código fácil de mantener mediante valores, principios y técnicas.

CRC Cards (Class Responsibility Collaborator)

Por Manuel Perez

Quería compartirles esta herramienta que vimos en una kata con Codesai y Audience que me parece una buena alternativa y a la vez complemento de los clásicos UML a la hora de poner sobre la mesa lo que tenemos en la cabeza cuando vamos a diseñar.

¿Qué son las tarjetas CRC?

Las tarjetas CRC (Class Responsibility Collaborator) es una actividad en grupo de modelado orientado a objetos en la cual el equipo puede manifestar y debatir ideas acerca del diseño de un sistema. Hace especial énfasis en la simplicidad, comunicación y límites de un sistema. Se suele utilizar en las primeras fases del desarrollo de una historia como paso previo a la implementación o escritura de un esquema UML. Esta herramienta fue creada por Ward Cunningham and Kent Beck.

Las tarjetas CRC están formadas por tres partes:

CRC Cards (Class Responsibility Collaborator)

En primer lugar escribimos el nombre de la clase y seguidamente escribimos todas las responsabilidades y colaboradores que tiene dicha clase. Al ser una actividad grupal es deseable que se abra un debate en base a las ideas que van surgiendo. Por otra parte, la actividad fue ideada para ser una actividad presencial con tarjetas físicas por lo que no era posible crear una clase con muchas responsabilidades y colaboradores.

De esta manera podemos hacernos una idea a vista de pájaro del sistema y la relación entre los artefactos que lo componen.

Ejemplo práctico.

¿Por qué debería mi equipo hacer esta actividad?

La razón principal y más importante es la de pararse un momento a pensar antes de lanzarse a lo loco a picar código. Por lo general, es muy fácil que una persona del equipo tenga perfectamente claro en su cabeza el diseño y todos lo demás se dejen llevar por su criterio sin cuestionarlo. Esto conduce inevitablemente a un código no escrutado por un equipo crítico.

En definitiva, es una buena herramienta para comunicar y discutir acerca de cómo plantear la solución de un problema antes de atacarla directamente.

Esto no quiere decir que está sea la única forma y la mejor de abordar los problemas de modelado. Solo es una herramienta más a tener en cuenta.

Os dejo algunos enlaces interesantes para seguir investigando acerca del tema.

¿Conocíais esta herramienta?

¿Usáis algún truco para modelar?

https://www.agilealliance.org/glossary/crc-cards/

https://echeung.me/crcmaker/

Publicado el 22/05/2022 por
Manuel image

Manuel Perez

¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.

Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?

Impulsamos el crecimiento profesional de tu equipo de developers