2010-06-04 5 views
9

Ich habe die Frage hier gelesen: Is it problematic to assign a new value to a method parameter?. wenn jedoch ist es mir nicht klar, etwas zu tun, wie:Java, das einem Parameter einen neuen Wert zuweist, wird dies als eine schlechte Methode betrachtet?

public void myMethod(Object obj) { 
    doSomething(obj); 
    obj = getNewObj(); 
} 

oder:

public void anotherMethod(Object obj) { 
    obj = doSomething(obj): 
} 

Diese im Grunde nur eine neue lokale Variable zu vermeiden, erklärt, dies ist es wert ?, ist dies gesehen als eine schlechte Übung ?.

+0

Ich denke, Sie verstehen das, aber um sicher zu sein: In Ihren beiden Beispielmethoden führt die Zuweisung zu 'obj' gar nichts aus, da das neue Objekt danach nicht in der Methode verwendet wird. – ColinD

+0

Ja, ich weiß das, aber danke für deinen Kommentar. –

Antwort

8

Dies ist eine schlechte Praxis. Sie werden sich schwer tun, ein Szenario zu finden, in dem sich die geopferte Lesbarkeit lohnt. Dies wird vor allem für diejenigen verwirrend sein, die die "pass by value" -Politik von Java nicht verstehen, was leider viele Leute betrifft.

+0

Eine "Menge Leute" probierten aus welcher Population? Ich denke, das hängt sehr vom Kontext ab. Was zählt, ist das Kompetenzniveau derjenigen, die meinen Code erben werden. Wenn ich Code in einer professionellen Umgebung schreibe, denke ich, dass es vernünftig ist, von meinen Nachfolgern zu wissen, wie Methodenparameter weitergegeben werden. Im Gegensatz dazu würde ich nicht davon ausgehen, dass wenn Code als Teil eines Tutorials auf - sagen wir - eine Spieleprogrammierungs-Website veröffentlicht wird. – meriton

+0

@meriton, ich finde es wahr von Programmierern, die professionell sehr professionell sein können, aber neu in Java und aus einem Hintergrund einer Pass-by-Reference-Sprache (zumindest wo es eine Option war). – Yishai

+0

@meriton Ich arbeite für ein großes Unternehmen und bin auf viele professionelle Java-Entwickler gestoßen, die dieses Konzept nicht verstehen. Ich versuche nicht, es zu dulden, aber bei vielen Unternehmen ist es eine Realität. – dbyrne

6

Leistung 0, Lesbarkeit -1. Ich wünschte, Eclipse könnte letzte Tags automatisch hinzufügen.

+0

+1 für immer "final" für Methodenparameter. Wenn es jedoch die Methodensignatur lesbarer macht, ist zweifelhaft. – Pindatjuh

+4

Eclipse fügt den Methodenparametern und lokalen Variablen automatisch ein 'final' hinzu, wenn Sie dafür eine _save-Aktion_ definieren. – tscho

Verwandte Themen