2009-07-16 14 views
0

ich folgend in Legacy-Code gesehen habe:Neuzuweisung Parameter

public void someFunction(List myList){ 
List myList2 = myList; 
} 

Gibt es einen guten Grund, wieder assign Parameter als lokale Variablen in einer Funktion?

+0

Das sieht wie Java oder C# aus, also muss es ein ziemlich neuer "Legacy-Code" sein! –

+0

@Neil: Das "Legacy" -Label hält sich ziemlich schnell, und Java ist 14 Jahre alt. –

+0

Ja, es ist Java-Code. Danke für alle Antworten! :) – Tamar

Antwort

1

Nicht wirklich. Aliasing oder Wiederverwendung von Namen sollte meiner Meinung nach vermieden werden.

0

Es hängt von der Sprache ab. In einigen Fällen möchten Sie möglicherweise später Änderungen an der "Kopie" vornehmen - und in einigen Sprachen/Situationen wird die Änderung des ursprünglichen Parameters Änderungen an dem, was der Anrufer sieht, bewirken.

Wenn Sie sagen könnten, welche Sprache Sie sprechen (Java?) Und ein konkretes Beispiel geben, würde uns das erklären helfen.

0

Es gibt keinen guten Grund, dies zu tun, mit Pass-by-Value-Parametern. Das sieht nach einem nicht ganz so flüssigen Entwickler aus, der daran erinnert, dass eine andere Sprache, mit der er gearbeitet hat, ihn biss, wenn er nicht an Kopien seiner Parameter arbeitete.

1

Könnte ein persönlicher Stil sein. Oder ein fehlgeschlagener Versuch, eine neue Referenz zu erstellen? Ich bin mir ziemlich sicher, wie der Compiler myList2 zugunsten von myList verwirft.

+0

ja, wahrscheinlich Compiler wird es weg optimieren. – artificialidiot

Verwandte Themen