Sembra davvero puzzolente e senza vedere più contesto è impossibile dirlo con certezza. Potrebbero esserci due ragioni per farlo, sebbene ci siano alternative per entrambi.
Innanzitutto, è un modo conciso di implementare la conversione parziale o di lasciare il risultato con valori predefiniti se la conversione fallisce. Cioè, potresti avere questo:
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
Naturalmente, questo di solito viene gestito utilizzando le eccezioni. Tuttavia, anche se le eccezioni devono essere evitate per qualsiasi motivo, c'è un modo migliore per farlo: il modello TryParse è un'opzione.
Un altro motivo è che potrebbe essere dovuto a motivi puramente coerenti, ad esempio fa parte di un'API pubblica in cui questo metodo viene utilizzato per tutte le funzioni di conversione per qualsiasi motivo (come altre funzioni di conversione con più output).
Java non è bravo a gestire più output - non può avere parametri di solo output come alcuni linguaggi o avere più valori di ritorno come altri - ma ancora, potresti usare oggetti return.
Il motivo della coerenza è piuttosto scadente, ma purtroppo potrebbe essere il più comune.
- Forse i poliziotti di stile sul tuo posto di lavoro (o la tua base di codice) provengono da un background non Java e sono stati riluttanti a cambiare.
- Il tuo codice potrebbe essere stato una porta da una lingua in cui questo stile è più idiomatico.
- La tua organizzazione potrebbe aver bisogno di mantenere la coerenza delle API in diverse lingue, e questo era lo stile con il minimo comune denominatore (è stupido ma succede anche per Google ).
- O forse lo stile aveva più senso in un lontano passato e si trasformava nella sua forma attuale (per esempio, avrebbe potuto essere il modello TryParse ma un predecessore ben intenzionato ha rimosso il valore di ritorno dopo aver scoperto che nessuno lo controllava affatto).