AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Trennung von GUI und Logik, wie geht ihr vor?
Thema durchsuchen
Ansicht
Themen-Optionen

Trennung von GUI und Logik, wie geht ihr vor?

Ein Thema von divBy0 · begonnen am 19. Aug 2011 · letzter Beitrag vom 30. Jan 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.645 Beiträge
 
#1

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 14:23
sorry, wenn ich am Thread vorbei rede. Aber zurück zum Beispiel der Addition. [...] Wiederverwendbarkeit des Codes? Kann ich mit Copy und Paste schneller, bessere Lesbarkeit des Codes?)
Du arbeitest wahrscheinlich nicht an größeren Projekten. Bei einem kleinen Projekt, an dem man alleine arbeitet, mag das pragmatisch und effizient sein. In einem größeren Projekt, wo Teams >= 10 Personen arbeiten ist z.B. gerade das von Dir angesprochene Copy & Paste zwar auch in jedem einzelnen Fall schneller, aber: Der Kunde ruft an und sagt dass an der Ausgabe von Stelle X ein Bug ist. Wahrscheinlich ein Umrechnungsproblem oder falsche verwendete Einheiten. Es fällt auf, dass eine bestimmte Funktion einen Bug hat, der zu einem falschen Ergebnis führt. Mitarbeiter A fixt den Bug und deployed die Applikation neu.

Zeitsprung, Irgendwann ein paar Wochen vorher: Mitarbeiter B hat die Aufgabe, eine Exportfunktion zu schreiben, die die Ausgabe, die an Stelle X gemacht wird, enthält. Das Sind Daten, die ein zulieferer zu Produktion von Teilen benötigt. Er kopiert genau den fehlerhaften Teil, anstelle ihn wiederverwendbar zu machen und zu benutzen (würde länger dauern, ist 'nicht pragmatisch', der Code ist mit der Kopie besser lesbar, und sowieso ist das ja eher RAD und das andere OOP Overkill).

Was genau das Problem ist? Der Fehler ist jetzt immer noch am Programm, denn Mitarbeiter A hat den Fehler an Stelle X und gefixt und, weitsichtig wie er war, sogar noch geschaut von welchen Stellen der Code noch benutzt wird. An einer weiteren Stelle musste die Ausgabe noch um die, jetzt korrekte, Einheit angepasst werden, aber mehr war nicht zu machen. Das der Code von einem anderen Kollegen an Stelle Y kopiert wurde, davon weiss er nichts. Selbst wenn er mit so etwas rechnen müsste und er bei seinen Kollegen fragt, kann sich B nicht mehr daran erinnern, genau den Code verwendet zu haben. Ist ja schon ein paar Wochen her, und die Exportfunktion schon lange vergessen.

Ohne zu wissen, dass der Fehler jetzt an stelle B immer noch im Programm (und damit im Export für den Zulieferer) ist - er sieht das korrekte Ergebnis ja an Stelle A - bestellt der Kunde anhand der Daten einen Großauftrag beim Zulieferer. Die gelieferten Kabelbäume für den A380 sind zu kurz - es gibt einen Millionenschaden. Weil irgendjemand Copy & Paste benutzt hat.

Nein, ich gehöre nicht zu den Programmierern die einfach Buttons und Edits auf die Form klatschen! Ich bin ein Programmierer der sich überlegt was er macht und den Aufwand und Ertrag abschätzt. Wo Trennung von GUI und Anwendungslogik sinn macht, setze ich es auch ein. Aber ich bin nicht ein Gläubiger der macht, was die Mehrheit sagt.
Eigentlich sagt es nur eine Minderheit, das die Trennung von Logik und UI Sinnvoll ist. Das Problem ist, dass es leider keine Wirtschaftlichen Auswertungen darüber gibt, wieviel Geld und Zeit es kostet, es vorher ein einziges mal ein wenig aufwendiger zu implementieren und wieviel Geld un Zeit es kostet, hinterher in kopiertem Code, der zudem durch fehlende Trennung / zu starke Bindung schlecht bis gar nicht automatisiert Testbar ist, Bugs überhaupt an allen Stellen zu lokalisieren und zu fixen, ggf. mehrfach, und das alles hinterher wieder manuell durchzutesten.

Ich würde jede Wette eingehen, die Sicherheit und die Zuverlässigkeit, die eine sauber aufgesetzte Applikation bietet (im Sinne von: Fehler fallen durch automatisierte Tests sofort auf, durch saubere Trennung ist alles Testbar, durch saubere Trennung lassen sich neue Features leichter und schneller einbauen, weil sie schon funktionierenden Code absolut nicht beeinflussen können), wiegen den scheinbaren Vorteil den RAD bietet (ein wenig schneller bis zum ersten sichtbaren Ergebnis) um längen auf. Und zwar in nahezu jedem einzelnen Fall.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#2

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 15:20
sorry, wenn ich am Thread vorbei rede. Aber zurück zum Beispiel der Addition. [...] Wiederverwendbarkeit des Codes? Kann ich mit Copy und Paste schneller, bessere Lesbarkeit des Codes?)
Du arbeitest wahrscheinlich nicht an größeren Projekten. Bei einem kleinen Projekt, an dem man alleine arbeitet, mag das pragmatisch und effizient sein. In einem größeren Projekt, wo Teams >= 10 Personen arbeiten ist z.B. gerade das von Dir angesprochene Copy & Paste zwar auch in jedem einzelnen Fall schneller, aber: Der Kunde ruft an und sagt dass an der Ausgabe von Stelle X ein Bug ist. Wahrscheinlich ein Umrechnungsproblem oder falsche verwendete Einheiten. Es fällt auf, dass eine bestimmte Funktion einen Bug hat, der zu einem falschen Ergebnis führt. Mitarbeiter A fixt den Bug und deployed die Applikation neu.
Sorry, da habe ich mich missverständlich ausgedrückt, selbstverständlich mache ich nicht copy und paste innerhalb (m)eines Projektes. Ich habe es folgendermassen gemeint: Ich habe eine Funktionssammlung und kopiere genau einmal die benötigte Funktion in eine Unit (m)eines Projektes.
In meiner über 30 jährigen Laufbahn als Softwareentwickler konnte ich noch _nie_ eine komplette Klasse eines Projektes in einem anderen Projekt wiederverwenden, aber hunderte von Funktionen die ich einfach aus meiner Sammlung kopiere und eine Funktionsunit einfügen kann (oder aber in dll's die von mehreren Programmen wiederverwendet werden können).

Nun jedermann soll vorgehen wie es die Firmenpolitik vorgibt oder der jeweilige Einzelprogrammierer es mag. Solange ich keine masochistischen Gelüste in mir spüre, verwende _ich_ für Projekte mit einer GUI ein RAD-Tool.

Manchmal kommt es mir vor, gewisse Programmierer arbeiten nach Zeilenentschädigung (das habe ich vor über 30 Jahren auch gemacht als freischaffender Journalist für Computerzeitschriften, da habe ich auch des öftern meinen Code aufgeblasen um mehr Geld für die Finanzierung des Studiums zu erhalten - und hunderte haben dann diesen Code mühsam abgetippt .

Geändert von bernerbaer (20. Aug 2011 um 15:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 15:27
Und wenn du feststellst, dass die Funktion in der Sammlung einen Fehler enthält, dann durch suchst du alle deine Projekte um dann in jedem einzelnen den Fehler zu beheben? Wenn du nicht zentral auf diese eine Unit zugreifen willst (Ist immer etwas mühsam, wenn man es OpenSource verteilt, alle benötigten Units für das Archiv zusammenzusuchen.), dann ändere den Fehler in der Unit und kopiere sie in den Projektordner der betroffenen Projekte. Wenn du dann noch Buildscripte verwendest, brauchst du noch nicht mal die IDE zu öffnen. So mache ich das immer.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#4

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 15:41
Und wenn du feststellst, dass die Funktion in der Sammlung einen Fehler enthält, dann durch suchst du alle deine Projekte um dann in jedem einzelnen den Fehler zu beheben? ....
Nein, nur wenn ein Kunde reklamiert, und dann kassiere ich in der Regel wieder ab , wobei das (leider) kaum vorkommt.

Alle meine Funktionen habe ich in einer DB mit Versionshistory und dem Einsatz in welchem Projekten ich sie verwende.
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#5

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 16:26
Zitat von bernerbaer:
Manchmal kommt es mir vor, gewisse Programmierer arbeiten nach Zeilenentschädigung
Deine Erinnerungen lese ich mit großem Vergnügen und sie erinnern mich an eine Zeit, als ein kräftiger Hieb auf den Schwarz-Weiss-TV wirklich das durchrollende Bild anhalten ließ. Heute müsstest Du bei Deinem 3D-Gerät überhaupt erst einmal eine passende Stelle zum Draufhauen finden. - So hat halt jede Zeit seine Problem-Löse-Technik.

Ich gebe Dir auch Recht, wenn Du in Deinem Öko-System kein Handlungsbedarf siehst. Was kümmert Dich schon eine STVO auf Deinem eigenen Grundstück. Erst wenn Du öffentliche Straßen befährst, wirst Du u.U. mit Deinen eigenen Regeln zum Falschfahrer.

Erweitert man also das Thread-Thema vielleicht so: "Wie geht man vor, um Business-kompatibel zu sein?", dann sind wir automatisch wieder bei Design-Pattern und Co.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.055 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 16:29
Sorry, da habe ich mich missverständlich ausgedrückt, selbstverständlich mache ich nicht copy und paste innerhalb (m)eines Projektes. Ich habe es folgendermassen gemeint: Ich habe eine Funktionssammlung und kopiere genau einmal die benötigte Funktion in eine Unit (m)eines Projektes.
In meiner über 30 jährigen Laufbahn als Softwareentwickler konnte ich noch _nie_ eine komplette Klasse eines Projektes in einem anderen Projekt wiederverwenden, aber hunderte von Funktionen die ich einfach aus meiner Sammlung kopiere und eine Funktionsunit einfügen kann (oder aber in dll's die von mehreren Programmen wiederverwendet werden können).
Ich will garkeine Wertung über deinen Source abgeben, denn ich kenne weder ihn noch deine Projekte, aber das sagt meiner Meinung nach schon einiges aus, dass davon in 30 Jahren nichts wiederverwendbar war. Und vielleicht auch darüber, dass du nie in einem Team gearbeitet hast (oder doch?)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
SebE

Registriert seit: 31. Jul 2004
Ort: Chemnitz
316 Beiträge
 
Delphi 7 Personal
 
#7

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 16:39
@Stevie:
Es kommt auch auf die Domaine an, in der man bzw für die man entwickelt.
Wenn man immer für Gebiete Software erstellt, in der Wartung keine große Rolle spielt, weil sowierso immer alles neu aufgesetzt wird, kann einem die "Schönheit" (Trennung nach Aufgaben, ...) Wurst sein.

@neo4a:
Ich finde den aktuellen Threadtitel eindeutig.
Es heißt ja nicht "Trenung: ja oder nein", sondern "Trennung: ja, aber wie?"
Sebastian
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#8

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 16:40
Ob mein Code nun gut oder schlecht strukturiert ist, ob er im Markt aufgenommen wird oder nicht, ist doch eigentlich für dieses Thema egal. Ja ich habe mehrere Teams geleitet und in der Forschung auch gelehrt.

Hier geht es um das Prinzip und im realen Leben (nicht in der Lehre, ich habe selbstverständlich Studenten MVC weitervermittelt) ist reales und reines MVC meiner Meinung nach nicht realisierbar, ausser man ist wie schon gesagt masochistisch veranlagt und erzeugt einen Overhead an Code der nicht mehr wartbar ist.

Oder um es auf eine andere Ebene zu bringen: Denkst Du jeder gläubige Katholik hat nur 2 -10 Sex in seinem Leben, da gemäss Katholizismus Sex nur zur Fortpflanzung praktiziert werden soll?

So und nun klinke ich mich hier aus.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.055 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 16:44
So und nun klinke ich mich hier aus.
Ist auch wohl besser so, wenn ich mir deine Argumentation anschaue...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#10

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 16:49
So und nun klinke ich mich hier aus.
Ist auch wohl besser so, wenn ich mir deine Argumentation anschaue...
Da widerspreche ich Dir. Wer in einem Posting MVC, Studenten, Sex und Katholizismus unterbringen kann, hat Perspektiven und Assoziationen, die noch sehr unterhaltsam werden könnten.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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-2025 by Thomas Breitkreuz