Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.610 Beiträge
 
#78

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