Die Trennung der Zuständigkeiten und die damit verbundene bessere Übersichtlichkeit des Codes finde ist das wesentliche Kriterium.
Wenn man das Alter einer Person anzeigen will, sollte man dieses nicht im Formular berechnen.
Besser ist es, dies in der Personenklasse zu tun und ein Label dann an dieses Property zu binden.
So muss man später nicht verschiede Stellen suchen, wo man eine entsprechende Berechnung durchgeführt hat.
In der Klasse kann man diese Berechnung jederzeit ändern, ohne dass das die
GUI interessieren muss.
Soweit sollte das jedem einleuchten, der schon länger objektorientiert programmiert.
Selbst, wenn man die
GUI nicht irgendwann mal austauschen oder Tests für die BL einrichten will, profitiert man von einer solchen Trennung.
Im Grunde ist diese Trennung schon vorhanden, wenn die BL komplett in einfachen Klassen läuft und die Formulare lediglich auf die Objekte zugreifen.
Wenn man sich den Klebecode sparen kann und ein Framework benutzt, wird das Ganze natürlich noch effektiver.
Die Bindung kann man dann direkt zwischen
GUI und BL organisieren oder nochmal Controller dazwischen setzen, die die Daten nochmal überprüfen und aufbereiten.
Also es gibt viele mögliche Ausprägungen, aber wichtig und sinnvoll ist, dass die
GUI niemals irgend etwas selbst tut, das strukturell eigentlich zur Geschäftslogik gehört. Dann ist das Projekt längerfristig sehr viel wartbarer.