Zasada Common Reuse Principle mówi, że klasy w pakiecie/assembly są ponownie używane wspólnie. Jest to konsekwencja Reuse Release Equivalence Principle z której wynika, że klient posiada referencje do całej biblioteki a nie pojedynczej klasy. Z tego zaś wynika, że jeżeli polega na jednej klasie (wykorzystuje jedną klasę) to może wykorzystywać wszystkie. W końcu publikując bibliotekę nie jesteśmy wstanie określić z których klas będzie ktoś używał (chyba że umieścimy tam jedną publiczną klasę ).
To wszystko znowu powoduje, że klasy, które nie są bezpośrednio związane z kontekstem biblioteki powinny znaleźć się w innym assembly.
Jak się nad tym zastanowić to ma to głęboki sens. Biblioteka powinna zawierać spójny zakres funkcjonalności, której od niej odczekujemy – tylko tyle i jednocześnie wszystko co jest potrzebne do zrealizowania tej funkcjonalności. Jeśli chcemy skorzystać z biblioteki to raczej nie jest zbyt wygodne targanie kilkunastu bibliotek i składnie obiektów z nich. Najwygodniej dodać jedną referencję i cieszyć się z nowych możliwości.