Versione breve:
Ho scritto un codice che non viene fatto "nel modo giusto" perché, quando l'ho scritto, non sapevo come farlo. Ora che so come farlo "nel modo giusto", come faccio a decidere come risolverlo?
Versione più lunga con dettagli:
java.util.DecimalFormat
non è sicuro. Ho quello che è essenzialmente un oggetto Description immutabile che viene utilizzato su tutto il mio codice su molti thread diversi. Per risolvere questo problema, ho creato una classe wrapper SynchronizedFormatter
che fondamentalmente si limita a racchiudere un blocco attorno ai metodi di DecimalFormat
che uso.
Il modo giusto per farlo è usare un ThreadLocal
. Non sapevo nemmeno cosa fosse quando ho scritto il codice la prima volta. Ne vale la pena risolvere? La versione synchronized
funziona perfettamente. Come faccio a decidere, su questo in modo specifico e su questa situazione più in generale?
Inoltre, dovrei menzionare che ho bisogno di apportare altre modifiche a questa classe per ragioni più importanti di "Ho sbagliato la prima volta". Questo è quello che mi ha fatto pensare: se sto facendo un sacco di chiacchiere in questa classe, forse dovrei sistemare queste altre cose che sono nella mia lista. Ma poi temo la china scivolosa ...
Questo non è un duplicato di Quando refactoring perché Refactoring significa :
Improving a computer program by reorganising its internal structure without altering its external behaviour.
Questa domanda parla della modifica del comportamento del codice (ad esempio utilizzando synchronized
rispetto a ThreadLocal
. Forse non dovrebbe essere taggato refactoring .