Recentemente sono entrato in discussione su come dovrebbe apparire la firma del metodo per un metodo API che non espone gli oggetti interni utilizzati dall'applicazione al chiamante. Ecco come appare la situazione:
-
La nostra API dovrebbe esporre un metodo per dire,
public int updateSummary(String summaryMessage) { update_in_DB(summaryMessage); if (success) return 1; return -1; }
o
public void updateSummary(String summaryMessage) {
update_in_DB(summaryMessage);
}
Questo metodo può essere richiamato dai client per aggiornare il riepilogo delle operazioni.
-
Il dibattito era, cosa dovrebbe essere Return_Type?
i. vuoto o,
II. qualcosa come int o enum che trasmette informazioni sul fatto che l'operazione abbia avuto successo o meno.
III. Return_Type non può essere di tipo object / entity che rappresenta l'oggetto reale perché esporrà internals dell'applicazione al chiamante.
il mio punto è, aggiungendo un tipo di ritorno come int / enum renderà il metodo testabile (tramite unit test) anche, esso consente al chiamante di agire se questa operazione fallisce. Ma a parte ciò è stato dato che, dovrebbe essere nullo e se l'operazione fallisce, l'errore dovrebbe essere propagato all'utente perché l'applicazione dovrebbe generare un errore indicante che qualcosa è sbagliato nella distribuzione. Qualcuno è a conoscenza di best practice o standard in merito?