Es ist doch ganz einfach:
Jeder Löffel (=Aktion, Prozedur) gehört in den Topf (=
Unit bzw. Klasse), in dem er rühren soll.
Die Kontrolle, wie sich die
GUI verhält (Knöpfe aktivieren, wenn Daten verändert wurden etc.), gehört nunmal in die
Formularklasse, aber
was dann mit den
Daten passiert, in die
Datenklasse.
Aber wir wären ja schön blöd, wenn wir das konsequent und ohne Rücksicht auf Verluste jedesmal durchziehen würden. Also gibt es natürlich Ausnahmen. Die bleiben aber wirklich Ausnahmen.
Andererseits macht man sich später mehr Arbeit, die Funktionalität dann doch auszulagern.
Beispiel: Wir basteln uns einen Logindialog.
Wir fangen an mit zwei Eingabefeldern, OK- und Abbruch-Knopf. Bei OK wird kurz in einer Tabelle nach dem User und dem Passwort gefragt und im Modal entweder mrOK, mrCancel oder mrNo zurückgeliefert (egal jetzt, ob das so toll ist).
Drei Zeilen Logik. Und dafür ne Klasse? Quatsch mit Soße!
Oh, nun soll das Passwort doch verschlüsselt abgelegt werden. Na und, suchen wir halt nach dem verschlüsselten Passwort. Wupps, eben eingebaut. Fertig.
Oh, nun sollen noch Benutzerrechte eingelesen werden.
Oh, hmm. Egal, reingebepselt. Fettig.
Spätestens jetzt darf man ordendlich in die Team-Kaffekasse zahlen, weil man zu frickeln anfängt und anderen das Leben schwermacht. Als Strafarbeit muss man nun den Code nochmals entwirren und allen Beteiligten zusätzlich einen ausgeben.
Also dann doch lieber gleich von Anfang an eine TBenutzer- und vielleicht eine TBenutzerlist-Klasse in einer separate
Unit 'uBenutzerverwaltung', und schon ist das ordendlich entkoppelt. Die TBenutzerliste hat dann eben nur eine Methode 'PrüfeBenutzerLogin', und die besteht aus drei Zeilen. Der TBenutzer kommt gänzlich ohne Logik aus. Na und?
Jemand kann sich am Login-Dialog blöd designen (dass das nicht so schwer ist, sieht man an den ganzen grenzdebilen Designern
), und die Coderecke kann sich an der Benutzerverwaltung unter Vermeidung von natürlichem Licht einen Wolf programmieren (Benutzergruppen, Zugriffsrechte, sichere Passwörter, automatisch ablaufende Passwörter, Backdoors, yippie!)