Ho una classe "Product" con ID e più campi e una funzione updateProduct (id, Product update). L'intenzione è che "aggiornamento" contenga solo le informazioni modificate - altri campi non modificati potrebbero essere mancanti o nulli.
Attualmente ho un codice simile al seguente:
Product updateProduct(long id, Product update) {
ProductBuilder builder = new Builder().basedOn(productDatabase.get(id));
if (update.getName() != null) {
builder.withName(update.getName());
}
if (...) {
// Builder.with...
}
if (update.getPrice() != null) {
builder.withPrice(update.getPrice());
}
return builder.build();
}
In sostanza, voglio prendere tutti i campi esistenti e applicare quelli nuovi in cima.
C'è un modo per esprimere meglio questa logica?
Se aggiungo una nuova proprietà Product, devo quindi aggiornare questo metodo. Anche se non è un problema per me, potrebbe essere meno ovvio dove il codice si sta rompendo in futuro.
La mia classe di prodotto ha attualmente un sacco di campi, in cui la maggior parte è facoltativa - sta avendo un'istruzione if per ognuno di essi evitabile in qualche modo?