Pomyśl o klasie jako o interfejsie API. Każda klasa musi zapewniać przejrzyste API (funkcje publiczne), które powinny być całkowicie jasne i oczywiste dla wszystkich użytkowników systemu.
Idealnym rozwiązaniem jest użycie interfejsu definiującego zachowanie lub API dla klasy o nazwie User, a następnie klasy UserImpl, która implementuje zachowanie.
Każda klasa powinna mieć jedną odpowiedzialność za system. Np. Za koszyk zakupów odpowiada klasa NakupnyKosik. Klasa User powinna być odpowiedzialna za użytkownika. Prawdą jest, że im mniejsza i jaśniej określona odpowiedzialność klasy za system, tym lepiej.
Więc wolisz mniejsze klasy niż duże. Dotyczy każdej klasy i pliku.
Klasę nazywa się słabo spójną, jeśli wszystkie jej metody wykorzystują wszystkie właściwości klasy. Klasę nazywamy minimalnie spójną, jeśli żadna z metod nie wykorzystuje pojedynczej właściwości klasy.
Marián Knězek