![]() |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Hallo zusammen,
ich frage mal ganz ketzerisch, welche Vorteile bring es das GUI von der Geschäftslogik zu trennen? Die Programmgeschwindigkeit ist es wahrscheinlich nicht, durch die Übergaben der Daten werden zusätzliche Befehle notwendig die die Geschwindigkeit des Programms verringert. Besser Wartbarkeit? Ich weis nicht, wenn eine Datenbank-Anwendung um ein neues Datenbankfeld erweitern werden muss, so muss diese Änderung in allen Modulen berücksichtig werden. Besser Testen? Man muss die Übergaben der Module zusätzlich testen, dass bedeutet erstmal Mehraufwand. Man kann die GUI austauschen, wirklich? Entwickelt wurde für einen Destop-PC, jetzt soll das Programm auch auf Mobilgeräte laufen, auch hier kommt man nicht herum in den meisten Modulen eine Anpassung durchzuführen. Man braucht sich ja nur mal Windows 10 ansehen, wie es aussieht, wenn man versucht ein Destop-Programm auch für Mobilgeräte fit zu machen. Ich finde das diese Entwurfsmuster auch dazu führen, dass man einfach drauflosentwickelt, man nennt das dann einfach „agil“ und schon ist alles OK. Außerdem, für viele Probleme gibt es kein Muster, oder jedenfalls kein bekanntes Muster, entweder weil das Problem zu selten auftritt oder weil es jeweils ganz spezifisch im jeweiligen Kontext neu gelöst werden muss. Dieser Beitrag soll nur zum Nachdenken anregen, weil man sich vor Extreme hüten sollte. Bis bald Chemiker |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Zitat:
Zitat:
Zitat:
![]() Zitat:
Zitat:
Zitat:
Aber dazu gehört auch zu wissen, wann man etwas anders machen muss, weil... Zitat:
|
AW: Trennung von GUI und Logik, wie geht ihr vor?
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. |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Zitat:
Man muss ja nicht ins andere Extrem fallen wie an dem Code wo ich grad dran bin bei dem zwischen Anwender und DB ca. sieben Schichten liegen. :-D (Wohlgemerkt bei einer Desktop-Anwendung) |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Moin, die normale VCL Anwendung fördert die Trennung nicht wirklich. Denke das dies bei Windows Applikationen auch bis zu einem gewissen Grad vertretbar ist die Logik mit dem Formular zu verknüpfen, für Webanwendungen mit Webformular und serverside Execution geht es schlicht nicht.
Solange mit Delphi nicht ernsthaft Weboberflaechen entwickelt werden können, wird es wohl keine saubere Trennung geben. Grüße in die Runde :-) |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Zitat:
Gruß K-H |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Zitat:
Eine solche Trennung kann man aber genauso mit VCL oder mit jedem anderen Oberflächenframework bewerkstelligen. |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Egal wie man etwas trennt... Eine Schichttrennung hat immer Vorteile.
Wer hat sich nicht schon mal geärgert das man die Datenbank X gegen eine andere Datenbank tauschen möchte oder auch nur andere Zugriffskomponenten (BDE zu FireDac z.B.) Hat man je Formular zig Komponenten drauf geklickt ist das der Horror... Dann noch alle Verbindungen im Objectinspector zusammen geklöppelt und wahrscheinlich alle Felder oder Grids mit Datasets verknüpft... Oder noch schlimmer per LiveBindings... Für ein Prototype mag das noch gehen, aber für eine Anwendung die ggf. sogar mehrere Programmierer pflegen sollen? Naja... Alles in ein Form zu packen rächt sich sehr schnell... Wer es so gemacht hat, soll doch mal eben von FireDac & lokaler Interbase Datenbank auf einen REST-Server / SOAP umstellen... Ich tausche nur ein Interface im Model... Mavarik |
AW: Trennung von GUI und Logik, wie geht ihr vor?
Zitat:
|
AW: Trennung von GUI und Logik, wie geht ihr vor?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz