T-Rex: Zentrale Stelle oder Geteilte Anliegen?

Beitrag lesen

Moin,

Hätte da mal eine Meinungsfrage bei der ich selbst geteilter Meinung bin und somit nicht weiter komme. Es gibt manchmal in einem System die Frage ob man eine "neue" sache mit den bisherigen Funktionen, Klassen, Objekten löst (mit dem Wissen diese eventuell zu erweitern) oder eine neue Funktion zu schaffen (mit dem Wissen einige Teile redundant im System zu haben).

Als Beispiel bei mir ist die User Ein- und Ausgabe.
Bei mir existiert bereits eine Ausgabe der Userdaten. Dabei gebe ich ein Array der Userdaten an eine Funktion. Diese bereitet die Daten so vor, dass sie ins Template übergeben werden.
Jetzt möchte ich dass der User diese Daten auch eingeben kann, also ein Formular. Um die eingegeben Daten aus zu geben könnte ich ja oben genannte Funktion benutzen. Also wieder Userdaten an eine Funktion übergeben. Da ein anderes Template angesteurt wird, können die Tempalte Daten anders verarbeitet werden. Also Variante 1 (einfache Ausgabe):
Daten -> Funktion
Template:
<div>{Username}</div>

Variante 2 (in einem Formular):
Daten -> Funktion
Template:
<input value='{Username}' />

Soweit würde ich sagen, ich brauche keine redundanten Code. Doch jetzt kann es vorkommen dass man z.B. eine Selectbox hat. Die Werte müssen auch irgendwie ins Template kommen. Variante 1 braucht diese funktionalität nicht, denn da soll einfach nur 1 Wert angezeigt werden. Das Formular hingegen braucht diese Funktionalität. Und hier fängt die Zwickmühle an. Ich sehe 3 Lösungswege.

1. Entweder gibt es eine Funktionalität die alles macht (somit auch unnütze Sachen für Variante 1)
Daten -> Funktion

2. Oder es gibt zwei Redundante Funktionen, eine für Variante 1 und eine für Variante 2
Daten -> Funktion 1 oder
Daten -> Funktion 2

3. Oder es gibt eine Grund Funktion, welche die Daten zur simplen Ausgabe vorbereitet und eine die noch die Formular speziellen Sachen dazu läd:
Daten -> Grund Funktion 1 ( und eventuell )
Daten -> Extra Funktionen
Problem hierbei sehe ich beim Aufruf. Wenn es viele Extra Funktionalitäten sind könnte das ganze eventuell irgendwann so aussehen:
Daten -> Grund Funktion 1 ( und eventuell )
Daten -> Extra Funktionen 1 ( und eventuell )
Daten -> Extra Funktionen 2 ( und eventuell )
Daten -> Extra Funktionen 3 ( und eventuell )
Daten -> Extra Funktionen 4 ( und eventuell )
Daten -> Extra Funktionen 5 ( und eventuell )
Daten -> Extra Funktionen 6 ( und eventuell )

Ich tendiere im Moment zu den Redundanten Sachen, also Lösung 1. Es sind logisch gesehen zwei getrennte Sache Ein und Ausgabe. Es gäbe auch nur eine begrenzte Anzahl von Redundanzen nämlich 2. Wenn man die Userdaten in einem anderen Zusammenhang braucht z.B. Beim Login (also z.B. Hallo Username) dann könnte man die Funktion zur Ausgabe wiederverwenden. Damit möchte ich nochmals betonen dass es nur 2 Redundanzen geben würde. Desweiteren sehe ich die Fehleranfälligkeit geringer. Wenn man etwas erweitern möchte, muss man das leider an zwei Stellen machen, dass wäre der Nachteil.
Achja mir geht es nicht um die speichern funktionalität. Die braucht es unabhängig von der Ausgabe sowieso.

Bin gespannt auf eure Meinung und vor allem auf eure Argumente.

Danke für eure Zeit!

Gruß
1 Woche Urlaub (YEAH)
T-Rex