Quali sono i problemi che dovrò affrontare se tutte le classi che uso sono vagamente accoppiate

1

Le classi vagamente accoppiate danno flessibilità. Se ho capito bene, il flusso di eventi, il pattern di osservatore ei pattern di progettazione come MVC si concentrano sull'accoppiamento libero. In questo contesto, quindi, mi propongo di realizzare un progetto in cui tutte le classi siano accoppiate liberamente.

Quindi, ad esempio, ho una classe A che usa B:

quindi anziché a.b.doThis() ;

Vado in questo modo:

b.addEventListener( B.OnEventHappens, doThisInA ) ; 

Quindi, la mia domanda è. Se questo tipo di relazione liberamente accoppiato durante un progetto è una buona cosa da fare? Realizzerebbe un progetto robusto? O non è consigliabile utilizzarlo sul lato "Estremo"?

    
posta Vishwas G 09.08.2012 - 21:09
fonte

2 risposte

3

Esistono molti tipi di accoppiamenti diversi da quelli che hai descritto. Tutto ciò che fa cambiare un pezzo di codice perché un altro è cambiato è l'accoppiamento. Tutto l'accoppiamento non può essere evitato perché dovrai lavorare con diversi bit di codice.

L'accoppiamento non è l'unica preoccupazione che hai comunque, quindi ci sono dei compromessi. Ad esempio, l'utilizzo del pattern Observer rende il codice difficile da leggere o analizza staticamente, perché non esiste un modo ragionevole per dire chi sta effettivamente osservando.

Se esistesse una pratica che era chiaramente sempre la scelta migliore in tutte le circostanze, in pratica non lo vedresti mai fatto in altro modo.

    
risposta data 10.08.2012 - 01:53
fonte
13

C'è un equilibrio che deve essere raggiunto tra l'allentamento dell'accoppiamento e la complessità. In quanto responsabile per l'architettura generale, devi raggiungere questo equilibrio.

Quando chiamiamo un metodo ToString() su un oggetto, possiamo farlo in modo sicuro perché sappiamo che tutte le nostre classi derivano da una classe base che ha un metodo ToString() , e quel metodo può essere sovrascritto nelle classi derivate per ottenere risultati migliori. Aggiungiamo listener di eventi a ToString() ? No, non lo facciamo. Perchè no? Perché aggiungerebbe ulteriore complessità senza ulteriori vantaggi.

Aggiungiamo ascoltatori di eventi ad azioni che possono o meno avere un obiettivo corrispondente per ricevere l'azione? Ovviamente. Perché? Perché generalizza il nostro modello di classe e consente il passaggio facoltativo dei messaggi laddove appropriato.

Se hai due classi che lavoreranno sempre insieme, ma i cui metodi non parleranno mai con nessun'altra classe (almeno nell'ambito delle rispettive Interfacce), non li disaccoppieresti con gli eventi. Perché? Perché il disaccoppiamento non ha alcun senso in quel contesto. Il disaccoppiamento può effettivamente rendere le cose più difficili, perché ci sono situazioni in cui una classe deve avere conoscenza dello stato dell'altro per poter funzionare correttamente (in altre parole, devono coordinare i loro sforzi). Il disaccoppiamento fa sì che le classi sappiano meno l'una sull'altra, non di più.

    
risposta data 09.08.2012 - 21:18
fonte

Leggi altre domande sui tag