Warum betreiben wir modularen Klassenentwurf?

An dieser Stelle kann man sich mit zwei Fragestellungen befassen:

Warum macht man das überhaupt? Könnte man nicht einfach alles Funktionalität in einer Klasse unterbringen, anstatt das Programm auf viele einzelne Klassen(dateien) zu verteilen?

Wenn die Modellierung eine Problems nicht eindeutig ist - woran erkennt man dann, ob man es "gut" gemacht hat?