Saltar al contenido

Referencia circular: cuestión de arquitectura

La guía paso a paso o código que verás en este post es la solución más eficiente y válida que hallamos a esta duda o problema.

Solución:

Lo que tienes no son tanto referencias circulares como dos ejemplos de

a relación padre-hijo cual es navegable de ambos extremos.

Sí, es normal y aceptable y no, no es un olor a código. Sí, algunas herramientas de serialización requieren que dé pistas. por ejemplo, Newtonsoft.Json querría el ReferenceLoopHandling.Ignore ajuste.

Navegabilidad como concepto no siempre se habla en el diseño OO, lo cual es desafortunado porque es justo el concepto que quieres aquí. (Es un término explícito en UML).

A menudo no necesita navegabilidad desde ambos extremos. Relaciones padre-hijo a menudo se codifican de padre a hijo solamente. Esto es muy común. Por ejemplo, un invoiceline la clase rara vez necesita un campo explícito para su padre invoice porque la mayoría de las aplicaciones solo miran la línea después de recuperar la factura principal.

Así que la decisión de diseño no es,

“¿Hace una revisión tener sentido sin un dibujo?”

Pero

“¿Alguna vez tendré que encontrar ¿un dibujo al que sólo se le ha dado una revisión?

Mi conjetura es que sus revisiones son como líneas de factura y no necesitan navegar a su padre. La respuesta para los dibujos. <——> la relación del proyecto no es obvia para mí. (Es una pregunta de análisis sobre su dominio, no una pregunta sobre el estilo de codificación).

Aquí hay una diferencia llamativa entre el código OO y, por ejemplo, SQL. En una base de datos SQL, debe ser el revision tabla que contiene la referencia a su padre drawingid. En el código OO, la clase padre casi siempre contiene una referencia a los hijos. Los hijos a menudo no necesitan una referencia a su padre porque la única forma de acceder a los hijos es teniendo ya al padre.

Las referencias circulares son bastante normales en los programas de C# y en los modelos de datos en general, así que no se preocupe por ellas. Sin embargo, deben manejarse especialmente durante la serialización.

Si crees que ha sido de utilidad nuestro artículo, te agradeceríamos que lo compartas con el resto juniors de esta forma nos ayudas a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *