L'utilizzo di globals è una specie di guida rischiosa. Probabilmente non ti farà del male, ma ti rende compiaciuto dei modi in cui potresti farti del male lungo la strada. Potrebbe farti arrivare lì un po 'più veloce ora, ma questo è in gran parte perché gli altri piloti stanno guidando in modo difensivo, e non ci sono stati ostacoli imprevisti sulla strada.
L'uso dei globals rende molto difficile vedere quando si crea un accoppiamento eccessivo, perché non c'è penalità al momento della scrittura. Se devi passare un oggetto User
in giro, alla fine ti infastidirai nel doverlo distribuire e trovare un modo per ridurre al minimo le aree in cui viene utilizzato. Di solito non hai bisogno di una porzione di dati in tutti i posti che pensi di fare. Ad esempio, è possibile evitare di utilizzare il PK dell'utente "in tutta l'applicazione" utilizzando un segnaposto nelle query, quindi sostituire il PK reale in uno posto prima dell'esecuzione.
Per quanto riguarda l'idea che tu abbia un utente che ha effettuato l'accesso, avrà sempre quell'unico utente e avrà sempre e solo bisogno del PK per quell'utente, io ti do la storia di Netflix. Al momento della prima registrazione per il servizio, disponevano di una coda DVD per account. Ciò ha reso molto difficile la condivisione tra me e mia moglie. Abbiamo dovuto riorganizzare costantemente la coda per assicurarci che uno di noi non perdesse i DVD per un tratto.
Poi hanno introdotto più code, il che è stato grandioso. Tuttavia, dopo un po 'hanno detto che dovevano interrompere questa funzione, perché rendeva troppo poco maneggevole il loro codice. Non ero al corrente dei dettagli, ma immagino che sia dovuto alla loro architettura simile a quello che stai chiedendo. Forse non usare un global per l'utente, ma fare ipotesi che lo rendano efficacemente il caso. Si sono dipinti in un angolo quando l'utente dell'account ha iniziato a essere potenzialmente diverso dall'utilizzatore della coda.
A quell'epoca, i negozi di noleggio di video stavano immagazzinando molti più DVD, quindi abbiamo cancellato il nostro account. Non siamo tornati finché non hanno risolto il problema. È solo di recente che sono riusciti a correggerlo anche per lo streaming.
Il mio punto è che non hai modo di sapere quali funzioni ti serviranno o vorranno lungo la strada. Creare accoppiamenti eccessivi renderà molto più difficile rispondere alle opportunità di mercato lungo la strada. Vale la pena il piccolo sforzo extra che ci vorrà per evitare i globali ora.