Domanda

Mentre ci sono molti esempi di buone su questo forum che contengono esempi di accoppiamento e la coesione, sto lottando per applicarlo al mio codice completamente. Posso identificare le parti del mio codice che possono avere bisogno di cambiare. Sarebbero gli esperti di Java in grado di dare un'occhiata al mio codice e spiegare a me che cosa aspetti sono buoni e cattivi. Non mi dispiace cambiare io stesso a tutti. E 'solo che molte persone sembrano non essere d'accordo con l'altro e mi sto trovando difficile capire realmente quali principi da seguire ...

È stato utile?

Soluzione

posso consigliare il libro di Alan e James di Design Patterns spiegato - Una nuova prospettiva sulla progettazione orientata agli oggetti (ISBN-13: 978-0321247148):

Cover: Design Patterns spiegato - Una nuova prospettiva sulla progettazione orientata agli oggetti

E 'un grande libro su ha-un e è-un decissions, tra cui la coesione e l'accoppiamento in progettazione orientata agli oggetti.

Altri suggerimenti

In primo luogo, vorrei dire che il motivo principale che si ottiene tali risposte DIVERSI è che questo fa davvero diventare un'arte nel corso del tempo. Molte delle opinioni che si ottiene non bollire fino a una regola veloce duro o realtà, più si tratta di esperienza generale. Dopo 10-20 anni di fare questo, si inizia a ricordare ciò che le cose che hai fatto che il dolore causato, e come hai evitato di fare di nuovo. Molte risposte lavorano per alcuni problemi, ma è l'esperienza di un individuo che determina il loro parere.

C'è davvero solo 1 veramente grande cosa che avrei cambiato nel codice. Vorrei prendere in considerazione esaminando quello che viene chiamato il modello di comando. Le informazioni su questo non dovrebbe essere difficile da trovare sia sul web o nel libro GoF.

L'idea principale è che ciascuno dei tuoi comandi "Child Aggiungi", "genitore add" diventano una classe separata. La logica di un singolo comando è racchiuso in una singola classe piccola che è facile da testare e modificare. Quella classe dovrebbe poi essere "giustiziato" per fare il lavoro dalla classe principale. In questo modo, la classe principale ha a che fare solo con la linea di comando l'analisi, e può perdere la maggior parte di esso è conoscenza di una FamilyTree. Ha solo sapere cosa riga di comando le mappe in cui le classi di comando e dare il via.

Questo è il mio 2 centesimi.

In breve:

di coesione in ingegneria del software, come nella vita reale, è quanto gli elementi rappresentati da un intero (nel nostro caso diciamo una classe) si può dire che in realtà vanno insieme. Pertanto, è una misura di quanto fortemente legato ogni pezzo di funzionalità espressa dal codice sorgente di un modulo software sia.

Un modo di guardare la coesione in termini di OO è se i metodi nella classe stanno utilizzando qualsiasi degli attributi privati.

Ora la discussione è più grande di questo, ma ad alta coesione (o meglio il tipo di coesione - la coesione funzionale). È quando parti di un modulo sono raggruppati perché tutti contribuiscono ad un singolo ben definito ordine del modulo

accoppiamento in parole semplici, è quanto componente una (di nuovo, immaginare una classe, anche se non necessariamente) conosce il funzionamento interno o elementi interni di un altro, ossia quanta conoscenza ha dell'altro componente.

Accoppiamento lasco è un metodo di interconnessione dei componenti in un sistema o rete in modo che tali componenti, dipendono l'uno dall'altro per il meno praticamente possibile ...

A lungo:

ho scritto un post su questo blog. si discute tutto questo in molti dettagli, con esempi, ecc E spiega anche i vantaggi di cui si dovrebbe seguire questi principi. Penso che potrebbe aiutare ...

Accoppiamento definisce il grado in cui ciascun componente dipende da altri componenti del sistema. Dati due componenti A e B, la quantità di codice in B deve cambiare se A cambia. Coesione definisce la misura di quanto coerente o fortemente legato le varie funzioni di un unico software are.It componente si riferisce a quanto la classe fa. Bassa coesione significherebbe che la classe fa una grande varietà di azioni e non si concentra su quello che dovrebbe fare. Alta coesione sarebbe quindi significare che la classe si concentra su quello che dovrebbe fare, ossia solo i metodi relativi alla volontà della classe. Nota: Le buone API presentano accoppiamento lasco e alta coesione. Una forma particolarmente aberrante di accoppiamento stretto che deve essere sempre evitata sta avendo due componenti che dipendono tra loro direttamente o indirettamente, cioè, un ciclo di dipendenza o dipendenza circolare. Info dettagliate nel link qui sotto http://softwarematerial.blogspot.sg/2015/12/coupling-and -cohesion.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top