Ciao.
Mi fa piacere condividere con voi una discussione che ho avuto ieri con i miei colleghi.
L’argomento era “cerchiamo di rendere il nostro codice più leggibile scegliendo dei nomi sensati per gli identificativi”.
Chiaramente l’argomento ha mille declinazioni, ma noi abbiamo approfondito un caso particolare: quello in cui una variabile cambia significato “nel corso di un metodo”.
Per evitare troppi commenti nel codice o trarre in inganno chi legge il codice un trucco che mi sono inventato (e che deriva dal buonsenso) è quello di introdurre ad un certo punto in un metodo una nuova variabile con un nome sensato e da lì in poi usare quella e non la prima.
Mi spiego con un esempio.
Ecco il caso (puramente didattico) che ho creato:

l problema sta nella allActiveUsers, che a metà codice in realtà diventa, in pratica, allExperiencedUsers perché ho tolto dalla collection gli utenti senza abbastanza esperienza. Quindi chi legge il codice di corsa e si sofferma su:

potrebbe pensre che questo metodo ricompensi tutti gli utenti, a prescindere dalla loro esperienza.
Certo, si può mettere un commento, ma non è elegante:

Una soluzione non otttimale è quella di dare precedenza allo stato “finale” della collection e scegliere di nominare la collection in base a cosa contiene alla fine:

Ma siamo daccapo e chi legge questa parte si chiederà come mai sto eliminando degli utenti esperti dalla collection degli utenti esperti:

La soluzione che propongo è creare una nuova variabile da usare da metà metodo in poi:
Cosa ne pensate?
Avete altre tecniche di naming che vi piace condividere?
Io sono stato molto inspirato da Clean Code di Robert C. Martin, che tra l’altro si trova anche in pdf in italiano cercandolo su google.
Buona giornata!
