Es wäre in der modernen Software ziemlich ungewöhnlich seine 25 lose Variablen auf einer rufenden Funktion zu haben, und diese dann explizit auf ein Verfahren oder Ctor passieren.
Meistens werden diese Variablen in einem OO-Design stattdessen bereits in eine Klasse (oder einige wenige Klassen) gepackt, gruppiert nach ihren logischen Verantwortlichkeiten.
Und da Java
Objekte als Referenz übergibt, könnte das Übergeben eines einzelnen Objektverweises auf dem Stapel einige Leistungsvorteile haben (weniger Variablen zum Stapeln). Der wirkliche Vorteil wäre jedoch die Lesbarkeit und Pflege des Codes.
Es muss jedoch beachtet werden, dass dies erfordert, dass die Klasse des übergebenen Objekts zwischen Benutzer und Service aufgeteilt wird - dies kann ein Problem sein, abhängig davon, was die Übertragungsklasse modelliert (z. B. eine Datenübertragung) Objekt, eine Geschäftseinheit, ein View-Modell, ein XML/JSON-Serialisierungsobjekt usw.?). Wenn das Teilen des Typs zwischen dem Aufrufer und dem Aufgerufenen Ihre Architektur verletzen würde, würden Sie normalerweise die 25 Variablen in eine andere geeignete kanonische Klasse (oder Klassen, die wiederum SRP Refactoring-Bedenken berücksichtigen) zuordnen und diese (diese) übergeben. Zu diesem Zeitpunkt wird es keinen Leistungsvorteil geben, aber der Vorteil der Lesbarkeit/Wartbarkeit bleibt erhalten.
Passing, dass viele Parameter an einen Konstruktor zu verbessern ist ein Code Geruch ohnehin unabhängig von Performance. Bei so vielen Parametern ist es sehr wahrscheinlich, dass Sie einen Fehler machen (z. B. zwei Parameter des gleichen Typs umkehren). –
http://stackoverflow.com/questions/5727336/performance-of-variable-argument-methods-in-java, das sollte Ihnen helfen. –
Ich würde vorschlagen, verschiedene Aspekte Ihrer Anwendung zu profilieren, um festzustellen, wo die Flaschenhälse tatsächlich sind, bevor Sie versuchen, sie zu optimieren. Zum Beispiel alles, was den Netzwerkzugriff, schlecht geschriebene Datenbankabfragen usw. betrifft. – Romski