L'unità del design significa che quando ti siedi per progettare un nuovo programma, in pratica stai decidendo un insieme di classi che includerai.
L'unità di riutilizzo indica che se vuoi riutilizzare la funzionalità che qualcun altro ha scritto, l'unità più piccola che puoi inserire nel tuo nuovo programma senza fare una nuova copia del codice è un'intera classe. Come ha sottolineato Doc Brown, spesso a causa dell'accoppiamento, quell'unità è ancora più grande. Non è possibile riutilizzare solo un metodo, o semplicemente la struttura dei dati senza alcun metodo, come è comune nei paradigmi funzionali e procedurali.
La maggior parte dei programmatori OO non si rende conto di quanto sia grande il problema che questo effettivamente causa per il riutilizzo. In generale, le classi devono essere attentamente progettate tenendo presente la riusabilità, e principalmente solo i progettisti di librerie si danno da fare.
Minore è l'unità di riutilizzo, minore è la probabilità che l'unità sia specifica per una singola applicazione. Ecco perché il codice riutilizzato di maggior successo utilizza interfacce di uso generale molto piccole, ampiamente accettate. Ad esempio, una semplice interfaccia compare
su un tipo consente a tale tipo di essere riutilizzato in un ampio intervallo di codice esistente, dagli algoritmi di ordinamento alle strutture di dati come gli alberi di ricerca binaria. Si noti, tuttavia, che il codice riutilizzato deve essere stato inizialmente progettato per trarre vantaggio da tale interfaccia.