Evitando riferimenti concreti, le relazioni espressive dovrebbero costituire un'eccezione alla regola?

0

Ho un oggetto business critico GroupMembership che rappresenta la relazione tra un utente e un gruppo. Ho impostato una politica architettonica che gli oggetti business critici dovrebbero evitare di fare riferimento direttamente l'un l'altro, e invece rappresentano solo le loro dipendenze con interfacce minimaliste. L'obiettivo di questo è promuovere un facile test unitario e minimizzare l'accoppiamento.

public class GroupMembership
{
    public GroupMembership(Guid id, IIdentity group, IIdentity user)
    {
        Id = id;
        Group = group;
        User = user;
    }

    public Guid Id { get; private set; }
    public IIdentity Group { get; private set; }
    public IIdentity User { get; private set; }
}

Tuttavia, in questa classe, l'aderenza a questa regola sembra un po 'legalistica; al momento, non ha nemmeno alcun comportamento al test delle unità. D'altra parte, rompere questa convenzione da sola può fornire un precedente negativo per gli altri sviluppatori del progetto, che potrebbero non essere in grado di comprendere i principi architettonici.

Sto andando fuori bordo qui? O si atterrà alle regole che ho impostato per aiutare il progetto a mantenere la conformità architettonica? Le relazioni dirette sono un'eccezione nota all'utilizzo di soli riferimenti virtuali?

    
posta TheCatWhisperer 02.05.2018 - 14:49
fonte

1 risposta

1

La ragione per evitare riferimenti concreti è evitare la funzionalità di accoppiamento. GroupMembership è solo un oggetto valore; non ha funzionalità. Quindi non guadagni nulla estraendo il riferimento a tali valori e crea semplicemente un overhead.

Quindi sì, andresti fuori bordo se applicassi i tuoi "oggetti business critici dovrebbero evitare di fare riferimenti reciproci direttamente" per valutare oggetti. Quindi il tuo codice va bene così com'è (salva le inutili dichiarazioni private set; , non sono state necessarie da quando C # 6)

    
risposta data 02.05.2018 - 17:04
fonte

Leggi altre domande sui tag