Laden...

Wie kann ich die verschachtelte Übergabe von unterschiedlichen Parametern vereinfachen?

Erstellt von derrobin vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.116 Views
D
derrobin Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren
Wie kann ich die verschachtelte Übergabe von unterschiedlichen Parametern vereinfachen?

Ich habe Programmcode hier mal vereinfacht dargestellt und möchte das Ganze kürzen, weiß aber nicht wie (die typen der eingangsparameter sind eig. kein string und int sondern teilweise listen enumerables etc.):

main(){
funktion1("hallo",5);
funktion2(....irgendwelche anderen parameter);
}

funktion1(string mystring, int myint){
HIER VIEL CODE
funktion3(mystring, myint)
HIER VIEL CODE
}

funktion2(....irgendwelche anderen parameter){
HIER VIEL CODE
funktion4(....irgendwelche anderen parameter)
HIER VIEL CODE
}

Also man kann hoff. erkennen. das die Eingangsparameter 2mal übergeben werden, einmal an z.B. Funktion1 und die widerum an funktion3. Die Codeblöcke sind bis auf die Parametertypen identisch. Ich könnte die Typen eventuell als Objekte kapseln oder was würdet ihr tun?

W
955 Beiträge seit 2010
vor 3 Jahren

Das ist schwierig zu sagen, da man zu wenig von der Aufgabenstellung weiß. Man könnte sicherlich mit Objekten bauen falls du die Parameter kapseln willst. Wenn verschiedene Typen denselben Code durchlaufen sollen könnte man generisch arbeiten. Man könnte die Algorithmen auch als Methodenargumente übergeben, vllt erklärst du mal genauer was du vor hast.

16.806 Beiträge seit 2008
vor 3 Jahren
  1. In C# sind das Methoden und keine Funktionen.
  2. Ich sehe kein Problem einen Parameter mehrfach zu übergeben, wenn er für die entsprechende Aufgabe verwendet wird.

Ich bin mir auch nicht sicher, worauf Du hinaus willst: Du musst halt Inhalte übergeben.

A
29 Beiträge seit 2012
vor 3 Jahren

Ich bin mir nicht ganz sicher, ob ich richtig verstanden habe, was dein Problem ist.

Hab ich das folgendermaßen richtig verstanden?:*Methode1: Enthält Code-Block "A", dann einen Aufruf auf Methode3 und dann Code-Block "B" *Methode2: Enthält Code-Block "A", dann einen Aufruf auf Methode4 und dann Code-Block "B" *Methode3: Enthält spezifischen Code für die identischen Parameter, wie sie Methode1 erhält *Methode4: Enthält spezifischen Code für die identischen Parameter, wie sie Methode2 erhält

Verstehe ich das richtig, dass Code-Block "A" bzw. "B" in den Methoden 1 und 2 identisch vorhanden ist, allerdings eben dupliziert, was du vermeiden willst?
Wenn dem so ist, und die beiden Code-Blöcke machen nichts mit deinen Übergabeparametern, dann solltest du die beiden Code-Blöcke in zwei weitere Methoden auslagern und diese entsprechend in den Methoden 1 und 2 aufrufen. Etwa folgendermaßen:*Methode 1: Aufruf auf MethodeA, dann einen Aufruf auf Methode3 und dann Aufruf auf MethodeB *Methode 2: Aufruf auf MethodeA, dann einen Aufruf auf Methode4 und dann Aufruf auf MethodeB

Sollten die beiden Code-Blöcke allerdings mit den Eingabeparametern arbeiten und diese (geringfügig) anders auswerten, solltest du über jeweils eine einzelne generische Implementierung für deine beiden Methoden Methode1 und Methode2 bzw. Methode3 und Methode4 nachdenken.

2.298 Beiträge seit 2010
vor 3 Jahren

Verstehe ich das richtig, dass Code-Block "A" bzw. "B" in den Methoden 1 und 2 identisch vorhanden ist, allerdings eben dupliziert, was du vermeiden willst?

Ein bisschen viel Spekulation. Das entnehme ich dem Eingangsbeitrag so nicht.

@derrobin
Wie Abt schon geschrieben hat, kannst du die gleichen Parameter auch noch an 100 weitere Methoden übergeben, wenn diese darin benötigt / ver- / bearbeitet werden.

Erkläre doch mal genauer was du vor hast und warum du denkst die Parameterübergabe irgendwie einkürzen zu müssen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

A
29 Beiträge seit 2012
vor 3 Jahren

Verstehe ich das richtig, dass Code-Block "A" bzw. "B" in den Methoden 1 und 2 identisch vorhanden ist, allerdings eben dupliziert, was du vermeiden willst?
Ein bisschen viel Spekulation. Das entnehme ich dem Eingangsbeitrag so nicht.

Das habe ich aus folgender Aussage geschlossen:

Die Codeblöcke sind bis auf die Parametertypen identisch.

Da ja hier die Parametertypen angesprochen werden, und die sich nur zwischen den Methoden 1 und 2 bzw. 3 und 4 unterscheiden, habe ich das entsprechend so geschlussfolgert.

Aber ja, es ist Spekulation. Der Eingangsbeitrag ist recht diffus.