Es scheint in der Tat stinkend, und ohne mehr Kontext ist es unmöglich, sicher zu sagen. Dies könnte zwei Gründe haben, obwohl es für beide Alternativen gibt.
Erstens ist dies eine übersichtliche Methode, um eine teilweise Konvertierung durchzuführen oder das Ergebnis mit Standardwerten zu belassen, wenn die Konvertierung fehlschlägt. Das heißt, Sie könnten dies haben:
public void ConvertFoo(Foo from, Foo to) {
if (can't convert) {
return;
}
...
}
Foo a;
Foo b = DefaultFoo();
ConvertFoo(a, b);
// If conversion fails, b is unchanged
Natürlich wird dies normalerweise mit Ausnahmen behandelt. Auch wenn Ausnahmen aus irgendeinem Grund vermieden werden müssen, gibt es eine bessere Möglichkeit, dies zu tun - das TryParse-Muster ist eine Option.
Ein weiterer Grund ist, dass dies aus rein konsistenten Gründen sein könnte, zum Beispiel als Teil einer öffentlichen API, in der diese Methode für alle Konvertierungsfunktionen aus beliebigen Gründen verwendet wird (zum Beispiel für andere Konvertierungsfunktionen mit mehreren Ausgängen).
Java kann nicht gut mit mehreren Ausgaben umgehen - es kann nicht nur Ausgabeparameter wie einige Sprachen oder mehrere Rückgabewerte wie andere haben - aber Sie können auch Rückgabeobjekte verwenden.
Der Konsistenzgrund ist eher lahm, aber leider ist er der häufigste.
- Vielleicht stammen die Stilpolizisten an Ihrem Arbeitsplatz (oder in Ihrer Codebasis) aus Ländern ohne Java und wollten sich nur ungern ändern.
- Ihr Code ist möglicherweise ein Port aus einer Sprache, in der dieser Stil idiomatischer ist.
- Möglicherweise muss Ihre Organisation die API-Konsistenz über verschiedene Sprachen hinweg aufrechterhalten. Dies war der Stil mit dem niedrigsten gemeinsamen Nenner (dumm, aber auch für Google ).
- Oder vielleicht machte der Stil in der fernen Vergangenheit mehr Sinn und verwandelte sich in seine aktuelle Form (es könnte beispielsweise das TryParse-Muster gewesen sein, aber ein wohlmeinender Vorgänger hat den Rückgabewert entfernt, nachdem festgestellt wurde, dass er überhaupt nicht überprüft wurde).