2009-05-29 14 views
11

Robert C. Martin in uno dei suoi libri parla della viscosità come un sintomo del disegno in putrefazione. Non capisco appieno l'idea di viscosità nello sviluppo del software. Potresti darmi qualche esempio?Marciume design e viscosità

risposta

11

Ha due usi, la viscosità del design e la viscosità dell'ambiente.

In primo luogo, fluidi con alta viscosità, come il dentifricio e il burro di arachidi, non flusso fluidi come fluidi a bassa viscosità come l'acqua.

Il design ad alta viscosità rende più facile fare un trucco che preservare il design. L'hack rende il codice ancora più rigido, aumentando ulteriormente la viscosità.

La viscosità dell'ambiente si riferisce al flusso di lavoro. Se i tempi di compilazione sono lunghi, o è un problema costruire il sistema o eseguire i test, i programmatori prenderanno scorciatoie per alleviare il dolore.

13

Man mano che il codice diventa più vecchio, diventa più pieno di hack e più pieno di dipendenze e, di conseguenza, diventa più difficile cambiare senza rompere qualcosa.

Quindi diventa meno "fluido" e più "solido", quindi l'analogia con la viscosità.

3

La viscosità è la capacità di un liquido di resistere ai cambiamenti da forze esterne. L'acqua è la base per la misura e ha una viscosità molto bassa (cioè scorrerà liberamente da un posto a un altro dato un percorso), mentre, per esempio, uno yogurt che ha una viscosità così alta quando è freddo che è quasi un solido e grazioso molto rimane dove lo metti (a meno che non indossi pantaloni di colore chiaro nel qual caso trova sempre la sua strada ogni volta ...).

Nel software, questo si traduce in quanto il codice resiste alle modifiche. Se si hanno molte dipendenze, può essere difficile modificare una classe principale, portando così a soluzioni alternative non ideali che a loro volta aumentano la resistenza del codice (aumentando la sua viscosità). Il codice ben progettato (bassa viscosità) può essere aggiornato e aggiunto senza avere un impatto significativo sulle applicazioni o altre classi che dipendono da esso.