Domanda

che sto cercando di dire a qualcuno il suo codice non è "coerente", nel senso che esso ha molteplici scopi. Io non credo di poter spiegare molto bene, quindi sto cercando un buon riferimento e / o definizione.

È stato utile?

Soluzione

Credo che il termine corretto è coesione .

  

Nella programmazione di computer, coesione è una misura di quanto fortemente legati e concentrato le varie responsabilità di un modulo software sono. Coesione è un tipo ordinale di misura ed è generalmente espressa come "coesione alta" o "bassa coesione" quando in discussione.

     

I moduli con elevata coesione tendono ad essere preferibile perché elevata coesione è associato con diversi tratti desiderabili di software compreso robustezza, affidabilità, riutilizzabilità, e comprensibilità che bassa coesione è associato con caratteristiche indesiderabili come essere difficile da mantenere, difficile da testare, difficile da riutilizzare, e anche difficile da capire.

Altri suggerimenti

Ho avuto codice completo da Steve McConnell accanto al mio computer (cioè i programmatori Bibbia), con la pagina aperta coesione spiegando così ho pensato che vorrei condividere,

  

di coesione nasce dalla progettazione strutturata   e di solito è discusso nella stessa   contesto come accoppiamento. coesione riferisce   a come strettamente tutte le routine in un   classe o tutto il codice in una routine   supporta uno scopo-how centrale focalizzata   la classe è. Le classi che contengono   fortemente funzionalità correlate sono   descritto come avente forte coesione,   e l'obiettivo è quello di rendere euristica   la coesione più forte possibile.

Io uso il termine “separazione degli interessi” per spiegare questo mentre refactoring. Spesso, quando il codice è abbastanza nuovo, le cose andranno ammassati a vivere insieme come le preoccupazioni separati non sono chiare in un primo momento.

Un modo semplice per illustrare questo al tuo lavoratore co sarebbe quello di chiedere loro di scrivere casi di test per il codice. Questo dovrebbe illustrare che il codice non è chiaro o coerente.

Un altro buon frase da usare è che funzioni / oggetti “dovrebbero fare una cosa, e farlo bene”, questo ha implicazioni in tutto, dai nomi oggetto / metodo per l'architettura complessiva del sistema.

Oltre alle risposte date finora, un modo semplice di pensare di coesione alta è la mancanza di duplicazione di funzionalità, e chiara separazione di funzionalità correlate in moduli distinti, componenti o classi. Pertanto, se si desidera una funzione simile a un'altra funzione, e si taglia e incolla e successivamente modificare una copia del codice, si stanno riducendo la coesione. Se si modifica il l'originale per gestire il nuovo caso, in cui il nuovo caso è chiaramente legata alla funzionalità esistenti, si stanno aumentando la coesione. In altre parole, se il programma ha a che fare una determinata cosa, non importa quanto tempo o nel modo in cui molti luoghi, per la massima coesione ci dovrebbe essere solo una volta pezzo di codice che fa quella cosa. Allo stesso tempo, una data classe, un modulo o di un componente dovrebbe avere una singola area di responsabilità. Lumping funzionalità estranei in una singola classe o componente riduce anche la coesione.

Come dice CodeWiki, coesione è tipicamente discusso con accoppiamento, dove i due possono agire in contrasto tra loro, in particolare quando le interfacce severe non sono accuratamente pianificato. Molti degli articoli Googled sulla coesione riferiscono alla progettazione OO, ma la coesione e l'accoppiamento non sono limitati a OO.

delimitate da una relazione ordinata, logica, ed esteticamente coerente di parti; "Un argomento coerente" - da http://www.websters-online-dictionary.org / definizione / coerente

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