Ci scusiamo per il titolo confuso di questa domanda, ma non riesco a pensare a un modo esatto per esprimerlo. Ho una lezione molto lunga con centinaia di metodi simili e sto cercando di trovare un modo per costruirlo senza così tante righe di codice e così tante violazioni DRY. Ogni volta che aggiungo una nuova proprietà alla mia classe, devo scrivere due metodi e aggiornare la funzione di copia. Ci sono già oltre 80 proprietà.
Attualmente questa classe è scritta in Java, ma mi chiedevo se fosse scritta in C ++ se potesse essere eseguita in modo più efficiente. Penso che si possa fare usando il preprocessore x-macros come descritto in wikipedia qui ma non sono un fan dei macro e vorrei preferisci farlo usando il linguaggio stesso, se possibile.
Ecco uno snippet semplificato della mia classe Java:
class InMemoryPerson implements Person {
private HashMap<String,Object> values = new HashMap<String,Object>();
public InMemoryPerson copyFrom(Person p) {
setName(p.getName());
// more code to copy all the properties...
}
public void setName(String name) {
values.put("name",name);
}
public String getName() {
return (String)map.get("name");
}
// many more methods for all the different properties...
// each method may have a different type
}