Autor Beitrag
JanHH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1



BeitragVerfasst: Di 23.03.04 17:43 
Hallo,

ich stehe vor der Aufgabe, ein wirklich sauber strukturiertes und designtes Programm zu schreiben, und ein wichtiges Konzept in der objektorientierten Programmierung ist ja die Trennung von Model bzw. Document und View. Meine Fragen sind nun:

a) Wie weit verbreitet ist eine solche "saubere" Softwareentwicklung in der Delphi-Gemeinde, ich bin nämlich eher der Meinung, dass Delphi aufgrund der Einfachheit, einfach "Klick und drauflos" zu arbeiten, eher eine unsaubere Arbeitsweise unterstützt,

b) Wie lässt sich das überhaupt realisieren und für wie sinnvoll haltet ihr das. Dazu ein Beispiel was ganz konkret in dem Programm auftaucht:

Bestimmte ganz wesentliche Daten liegen in Form einer Baumstruktur vor, der "saubere" Ansatz wäre eine Document-Klasse, in der diese Daten halt verwaltet werden und intern in einer irgendwie gearteten Datenstruktur gehalten werden, und die Visualisierunb (view) ist ein Delpi-TreeView. Wenn der Benutzer nun irgendwas am treeview rumeditiert wird entsprechend dem document eine Nachricht geschickt, was der Benutzer getan hat, das document ändert entsprechend seine Daten und der view wird wieder aktualisiet, weil das document dann dem view eine Nachricht "habe mich verändert" schickt und das view weiss, aha, aktualisieren.

Die unsaubere Lösung wäre, die Datenstruktur direkt in dem Delphi-TreeView zu speichern (der dafür ja auch diese data-Pointer hat).

Was haltet ihr von welcher Variante, wie macht man sowas "richtig", und das in Delphi?

Gruß und Danke,
Jan

Moderiert von user profile iconPeter Lustig: Topic verschoben
Loryn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Win 98, ME
D4 Stand.
BeitragVerfasst: Di 23.03.04 23:21 
Hallo Jan,

deine Frage klingt eher wie eine Meinungsumfrage. Hier also meine Meinung:

zu a):
Eine "saubere" Programmiertechnik ist eher eine Frage der Programmier-Disziplin, als des Werkzeugs. Ich programmiere schon lange Jahre mit Delphi (seit es Delphi2 gibt). Der Ansatz der objetorientierten Programmierung hat mir sehr gut gefallen. Meiner Meinung nach ist er in Delphi auch sauber realisiert. Als Neuling habe ich viel in den Delphi-Sourcen gelesen und mir einiges abgeguckt.
Mein Delphi-Projekt ist sehr groß (ca. 70.000 Zeilen Source und ca. 1MB Code). Ohne einen sauberen Programmierstil hätte ich da schon lange das Handtuch werfen müssen.

zu b):
Wenn die Daten in einem Dokument gespeichert sind und TreeView lediglich zur Anzeige verwendet wird, hat man eine saubere Trennung. Zu Beginn würde ich die Daten in TreeView laden (DataPointer verwenden) und anzeigen. Wenn der Benutzer seine Edierarbeit erledigt hat, werden die geänderten Daten wieder im Dokument abgelegt und der TreeView gelöscht. Vielleicht ist es gar nicht notwendig, die Änderungen im TreeView sofort im Dokument nachzuvollziehen.

Gruß Loryn
JanHH Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.03.04 01:08 
Danke für die Antwort :)

Ich widerspreche allerdings: Klar ist delphi an sich sehr sauber implementiert und es ist auch eine sehr saubere objektorientierte Programmierweise damit möglich, allerdings unterstützt es durch die allgegenwärtige "Einfachheit" schon ziemlich einen "klicken und los"-Programmierstil. Wenn man mit Delphi sauber programmieren will, muss man sich meiner Erfahrung mach erstmal bremsen und erst denken, dann tippen, aber die hohe Effizienz der vcl-Klassen und der IDE unterstützen eher genau das Gegenteil.

Den Ansatz, den Du bei b) genannt hast, würde ich nicht gerade als sauber durchdesignt bezeichnen.. Sauber ist: Wenn man im TreeView was ändert, bekommt das Document eine Botschaft, was sich geändert hat, ändert den Datenbestand entsprechend und schickt den views, die es beobachten, eine Nachricht dass die Ansicht(en) zu aktualisieren sind. Das ist zumindest das, was meiner Meinung und Kenntnis nach sauber wäre, verwendete design patterns sind Command und Observer. Und damit hab ich so meine Mühe beim TreeView.. wie das aktualisieren als TreeView-Ansicht aussehen soll, ohne dass dieser ständig neu gebaut wird und es damit entsprechend ruckelt und flimmert ist mir noch nicht ganz klar.

Gruß
Jan