Wann Daten von Code trennen?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Wann Daten von Code trennen?

    Nun bin ich 35 Jahre am Programmieren und habe immer noch viele Wissenslücken. :whistling:

    Wann trennt man am besten die Daten vom dazugehörenden Code?
    Wann ist Beispiel 01 der bessere Weg und wann Beispiel 02?

    Beispiel 01:

    VB.NET-Quellcode

    1. Public Class Class1
    2. Public Daten As Integer
    3. Public Sub TuWasMitDaten()
    4. End Sub
    5. End Class


    Beispiel 02:

    VB.NET-Quellcode

    1. Public Class Class1
    2. Public Daten As Integer
    3. End Class
    4. Public Class Class2
    5. Public c1 As Class1 = New Class1
    6. Public Sub TuWasMitDaten()
    7. c1.Daten = 1
    8. End Sub
    9. End Class
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:
    Ich würde immer sooft wie möglich Beispiel01 nehmen. Die Daten, die andere nix angehen, sollten Private sein. Sonst könnte ja jeder Hinz und Kunz die Klassendaten ändern. Encapsulation ist eines der Programmierprinzipien. Eine Klasse sollte nur so viele Infos wie nötig von sich preisgeben. Eine direkte Manipulation von Feldern (also Klassenmembervariablen) sollte unterbleiben. Tell, don't ask ist auch so ein Prinzip. Man soll ne Klasse nicht nach Daten fragen, sondern einen Befehl geben, dass bestimmte Sachen gemacht werden sollen. Stell Dir vor, dass Du n Bankkonto programmierst. Schwupps - kommt ein Verbrecher und ändert seinen Kontostand auf Integer.MaxValue.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    oobdoo schrieb:

    Wann trennt man am besten die Daten vom dazugehörenden Code?
    Komische Frage.
    Mir geht es bei Daten nicht darum Code und Daten zu trennen, sondern es geht darum, eine Datenmodell zu schaffen, was der Realität entspricht.
    Da kann einmal eine Beispiel01-ähnliche Struktur angemessen sein, mal eine Beispiel02-ähnliche.
    Aber beide Beispiele sind eiglich total ungeeignet, weil es gibt keine Realität, die in irgendeiner Weise einem Class1 oder Class2 ähneln könnte.

    Denk dir was konkretes aus - wie würdest du etwa MichaHo's neuliches Problem modellieren: Ein Kampfsportverein mit Mitgliedern, und die Mitglieder haben KarateGürtel verschiedenen Ranges.
    Über sowas kann man reden, und aufzeigen, wie ein Datenmodell stimmig ist, und wie nicht.
    @ErfinderDesRades Jou: Komische Frage.
    @oobdoo Nicht Daten und Code trennen, sondern Daten und GUI trennen.
    Datenhaltung in Datenklassen, diese verarbeiten in Datenverarbeitungsklassen und Daten präsentieren und manipulieren in der GUI.
    Das bedeutet z.B.
    • Eine TextBox ist kein Speicherort für einen RW-String, sondern eine String-Variable, die zur Anzeige und zum Bearbeiten einer Textbox zugewiesen wird.
    • Ein DataGridView ist kein Control zum Speichern einer Tabelle, dafür gibt es eine DataTable. Weise diese dem DGV als DataSource zu
    • usw.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!