Per quanto riguarda la tua seconda domanda, non sono a conoscenza di studi pubblicati o migliori pratiche. Per quanto riguarda la prima domanda, posso offrire alcune osservazioni dall'esperienza personale con un prodotto di lunga durata simile in cui i nomi "interno" ed "esterno" sono talvolta diversi.
I nomi che vorrei davvero aggiustare sono gli "omofoni", in cui un nome viene utilizzato sia internamente che esternamente per cose diverse . Questo può essere davvero confuso, in particolare se le due cose non sono completamente diverse (tale contesto aiuta a chiarire le ambiguità). Un esempio (astratto) di ciò nella mia esperienza personale è dove internamente hai qualcosa come un Foo
che è una raccolta di multipli FooEntity
; esternamente, solo quest'ultimo è visibile ed è chiamato "Foo". Mi ci è voluto un po 'per capire che quando il manuale del cliente parlava di più "Foo", in realtà significava multiplo FooEntity
(in un singolo Foo
), se per te ha ancora senso.
In secondo luogo, vorrei correggere eventuali "sinonimi" in cui un nome esterno è stato utilizzato internamente. Come nei nomi di variabili, parti di nomi di metodi / funzioni e così via. Ciò accade spesso quando gli sviluppatori implementano qualcosa direttamente dalla descrizione dei requisiti del cliente e dimenticano di "tradurre" i nomi. Una volta che ciò accade, anche il nome "sbagliato" tende a diffondersi, perché altri sviluppatori copiano / incollano parte di quel codice da utilizzare come modello per il nuovo codice, ad esempio. Questi sinonimi non sono così confusi, ma possono essere fastidiosi perché se stai cercando il codice per qualsiasi riferimento a Bar
te potrebbe essere necessario tenere presente che alcune parti potrebbero riferirsi ad esso comeQux
, quindi devi cercare due volte. (Questo potrebbe essere peggio nei linguaggi tipicamente dinamici rispetto a quelli statici, dato che devi cercare parti del nome di variabili / funzioni / ... piuttosto che sul nome del loro tipo.) Come nel caso contrario di "sinonimi ", Dove un nome interno è stato utilizzato esternamente: ciò tende a non accadere così spesso, poiché i dipendenti dell'assistenza clienti e così via sono generalmente meno consapevoli dei nomi interni, anche se presumo che sia confuso per i clienti quando accade.
Se riesci ad evitare o correggere almeno le due situazioni precedenti, non sono sicuro che dovresti arrivare al punto di rendere tutti i nomi interni uguali a quelli esterni. C'è probabilmente una buona ragione per cui i nomi interni non sono stati cambiati anche quando il nome esterno è stato reso diverso da quello interno in primo luogo. Nella mia esperienza personale, quella buona ragione è la necessità di supportare versioni precedenti del prodotto; potrebbe essere difficile unire una correzione di bug da una versione precedente alla pulizia dei nomi alla versione più recente se è necessario modificare un sacco di codice.