Sto scrivendo una funzione (o operator==()
in C ++), confrontando due oggetti. Il codice ha il seguente aspetto:
bool operator==(const Obj& copy1, const Obj& copy2)
{
if(copy1.a!=copy2.a)
return false;
if(copy1.b!=copy2.b)
return false;
if(copy1.c!=copy2.c)
return false;
return true;
}
Ci possono essere molti più membri di dati da confrontare, e non tutti i membri presenti in Obj
devono essere confrontati, quindi usare memcmp()
non è un'opzione. Potrebbero esserci anche test più complicati della sola equità dei membri. Ora c'è un altro modo:
bool operator==(const Obj& copy1, const Obj& copy2)
{
return (copy1.a==copy2.a &&
copy1.b==copy2.b &&
copy1.c==copy2.c);
}
Il primo modo sembra più verboso, ma anche più facile da modificare, mentre il secondo sembra un po 'fragile (non si può spiegare perché, solo sentirsi bene), ma sembra molto più semplice.
Che cos'è un modo migliore? C'è una vera differenza nella leggibilità o nella manutenibilità di questi approcci?