Alexander, W.: Geschmacksache?

Hallo werte Kollegen,

wie bei vielen anderen Programmen gibt es in meinem mehrere Seiten. Die Seiten stellen diverste Daten in tabellarischen Form dar. Die Daten für Tabellen werden aus der Datenbank angefragt.

Fallbeispiel: Ich habe 50 Seiten, wo diverse Tabellen mit Daten aus der Datenbank auf der Seite dargestellt werden. Für jede Seite gibt es einige Klassen (Controller (View), Model, Db). Dabei stellt sich die Frage, welche Methode der Programmierung besser ist.

Zum laden der Daten aus der Datenbank (hierfür spielen noch viele weitere Filterkriterien eine Rolle). Z.b. je nach Benutzerrolle sollen nud bestimmte Daten geladen werden.

Variante a.) Man baut in jede Klasse einen Codeblock, der das Laden der Daten übernimmt. Somit hat jeder Klasse (Model) eine Funktion z.B. "loadIndexData()".

Variante b) Man baut eine separate "Loader" klasse, die sich ausschließlich für das Laden der Daten kümmert. Dabei bekommt die Loader-Klasse notwendige Parameter (z.B. Benutzerrolle und seine ID und um welche Seite es sich handelt). In der Klasse wird dann eine große Switch-Schleife eingebaut, die je nach Anforderung benötigte Daten ladet und zurück an die Spezielle Model klasse gibt.

Beide Möglichkeiten haben Vor- und Nachteile. Ich wollte hier eure Meinungen hören. Bzw. wer das wie umsetzt. Schreibt man also kleine Codeblöcke in jede Klasse und lagert man eine große Ladefunktion in eine separate Klasse aus?

Danke für die Feedbacks.

Gruß Alexander.

  1. Beide Möglichkeiten haben Vor- und Nachteile. Ich wollte hier eure Meinungen hören. Bzw. wer das wie umsetzt. Schreibt man also kleine Codeblöcke in jede Klasse und lagert man eine große Ladefunktion in eine separate Klasse aus?

    Ganz einfach: DRY

    Warum sollte man in _jede_ Klasse  die Ladefunktionen einbauen, wenn man diese in ein speparates Modul auslagern kann?

    1. Warum sollte man in _jede_ Klasse  die Ladefunktionen einbauen, wenn man diese in ein speparates Modul auslagern kann?

      So wie Alexander schrieb ("großer" switch-Block), scheint er verschiedene Ladefunktionen zu haben.
      Wenn da wirklich sehr viel unterschiedlich läuft, würde ich das dann doch lieber aufteilen. Ein größerer Switch ist nämlich nicht schön zu überschauen.

      1. So wie Alexander schrieb ("großer" switch-Block)

        Da steht "Schleife" :p

        Wenn da wirklich sehr viel unterschiedlich läuft, würde ich das dann doch lieber aufteilen. Ein größerer Switch ist nämlich nicht schön zu überschauen.

        Das ist richtig, aber sobald zwei Klassen dieselbe Loader-Funktion benötigen, ist das eine unnötige Redundanz die es zu vermeiden gilt.