Sta usando un global per mantenere la cattiva pratica dell'utente attualmente loggato?

2

Sto facendo sviluppo Android in un gruppo relativamente inesperto e tutti i dati utilizzati dalla nostra applicazione sono gestiti in un database. Ci sono diversi casi in cui dovremo recuperare le informazioni dal database utilizzando le informazioni di identificazione / PK dell'utente attualmente connesso. Perché le uniche informazioni che l'utente ha di importante è il PK (IE non è necessario un'intera classe per rappresentare i tipi di utenti o qualsiasi dato associato) e poiché questo ID è importante per tutto l'ambito dell'applicazione e non cambierà una volta definito, abbiamo considerato l'archiviazione dell'ID / PK dell'utente in un globale su login riuscito.

L'uso di una variabile globale in una circostanza come questa cattiva pratica? C'è un modo migliore per gestirlo?

    
posta Jsess 24.02.2014 - 02:06
fonte

1 risposta

4

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.

    
risposta data 24.02.2014 - 14:31
fonte

Leggi altre domande sui tag