In Java habe ich eine Methode, die den Inhalt einer Liste ändert. Ist es besser zu verwenden:
%Vor%Oder ist es besser, Folgendes zu tun:
%Vor%Hinweis - Der einzige Unterschied zwischen den beiden Methoden ist der Rückgabetyp (eine Funktion gibt void zurück und die andere gibt eine Liste zurück).
Alles hängt davon ab, wie Sie List
verwenden - wenn Sie eine Art Liste implementieren und dies die nicht-statische Methode Ihrer List
-Klasse ist, sollten Sie
oder
%Vor%Über die Durchführung von Operationen auf der Liste oder ihrer Kopie: Sie sollten das gewünschte Verhalten und Ihre Erwartungen berücksichtigen - das Wichtigste - Brauche ich eine "alte" Listenkopie? . Tiefe Kopierliste kann ein wenig Overhead sein. Eine flache Kopie kann keine Operationen für bestimmte Elemente der Liste ausführen (d. H. Ihre Attribute ändern - wenn sie Objekte sind), ohne die "alte" Liste zu beeinflussen.
Über das Zurückgeben von void: Es ist eine gute Übung, eine geänderte Liste (oder zumindest eine Anzahl von geänderten Elementen) zurückzugeben, die es Ihnen ermöglicht, Methodenaufrufe zu verketten. Wenn sie nicht benötigt werden, können Sie sie immer ignorieren.
Wenn Sie nur die Liste manipulieren, hängt das ganz von der Stimmung ab. Einige Leute (einschließlich mir) argumentieren, dass es einfacher ist, Code mit der ersten Option zu lesen (und es ermöglicht eine Verkettung, wie von Adam hervorgehoben, wenn Sie so etwas wollen).
Beachten Sie jedoch, dass es nicht wirklich eine Referenz ist, die übergeben wird. Es ist ein Zeiger wirklich. Daher, wenn Sie die originalList-Instanz aus irgendeinem Grund erneut initialisieren, z. B. indem Sie ein
setzen %Vor%in Ihrem Methodenkörper. Dies wirkt sich nicht auf die Liste aus, die Sie tatsächlich an die Methode übergeben haben.
Meiner Meinung nach sollten Sie nur Methodenketten mit unveränderlichen Klassen fördern.
Wenn Ihre Funktion ein Objekt mutiert, ist es zu einfach, es versehentlich in einer Kette von Methoden zu tun.
Ein möglicher Vorteil von Option 1 ist, dass eine null
-Liste akzeptiert werden kann. Wenn Sie beispielsweise Foos sammeln und im Allgemeinen eine brandneue Liste erstellen, möchten Sie jedoch, dass die -Option zu einer vorhandenen -Liste hinzugefügt wird. z.B. (Notieren Sie auch den Namen der Methode)
und, wenn Sie möchten, fügen Sie auch eine explizite no-arg "get" -Methode hinzu
%Vor%Nun können Sie in Option # 2 eine neue, leere ArrayList erstellen und diese übergeben, aber Option # 1 ist bequemer. d. h.
Option 1 Verwendung:
%Vor%Option 2 Verwendung:
%Vor%Tags und Links java