Cosa dire al tuo capo se vogliono che tu usi una variabile globale

12

Attualmente sono 4 mesi in uno stage, e quando esaminavo il mio codice, il mio capo non mi piaceva che io avessi tenuto un oggetto specifico locale in un certo numero di metodi attraverso poche classi separate all'interno di un assembly. Non gli piaceva che ogni volta venivo creato un nuovo oggetto e invece mi diceva di creare un singolo oggetto accessibile da qualsiasi luogo. Ho quindi dovuto crearlo come oggetto statico all'interno di una classe statica, e semplicemente fare riferimento da qui voglio usarlo!

Come ti occuperesti di questo, dato che ho programmato solo professionalmente per 4 mesi!

    
posta Darren Young 19.01.2011 - 14:14
fonte

5 risposte

33

Se un oggetto è sufficiente, creare ogni volta un oggetto è uno spreco e qui il tuo capo potrebbe avere ragione.

Il problema è l'accesso corretto a quell'oggetto. Un metodo di fabbrica con una visibilità adeguata che restituisce sempre quell'oggetto statico è la prima soluzione che mi viene in mente. Esistono sicuramente altri.

    
risposta data 19.01.2011 - 14:25
fonte
8

Non posso commentare il tuo caso specifico, ma usare variabili globali è a volte una buona soluzione. La classe System di Java è piena di variabili statiche e globali.

Ma in generale, se pensi di avere ragione e il tuo capo ha torto, allora perché non chiedi al tuo capo di spiegare perché pensa che una variabile globale sia una soluzione migliore? Un semplice "Non mi piace" è tanto vago quanto "le variabili globali sono malvagie". Devi chiedere di più al tuo capo!

Se non può dare ragioni per la sua posizione, e puoi dare ragioni alla tua posizione, o viceversa, allora è una buona opportunità di apprendimento. Se entrambi siete in grado di giustificare le vostre posizioni, allora è probabilmente una questione di gusti - o di esperienza: il vostro capo deve aver programmato professionalmente più di 4 mesi, credo?

    
risposta data 19.01.2011 - 14:23
fonte
5

Come qualcuno nella tua posizione, il massimo che puoi fare è imparare. Se l'oggetto è essenzialmente una costante (cioè non può cambiare e non mantiene lo stato), allora il tuo capo potrebbe avere ragione. Non c'è nulla di male nell'avere un oggetto costante statico. Dopo tutto, quante definizioni di PI ci sono?

Alcune persone difendono la mentalità del "no global objects" fino al punto di fervore religioso. Questo è dovuto a una delle due ragioni: sono stati difficili da rintracciare bug o fragilità del sistema a causa dell'uso eccessivo di variabili / oggetti globali, oppure hanno sentito dire che è sbagliato e non riescono a pensare da soli. Io personalmente cado nel gruppo di persone che sono state colpite duramente dalla fragilità e difficili da tracciare bugs - ma ho anche imparato un po 'di equilibrio qui.

Se fossi nei tuoi panni, andrei avanti e farei quello che dice il capo: è il suo culo sulla linea, dopo tutto. Poi guarderei e vedrei gli effetti di quella scelta nel tempo. Questo è uno strumento di apprendimento efficace.

    
risposta data 19.01.2011 - 14:37
fonte
2

A seconda della situazione specifica, una variabile globale potrebbe essere la soluzione migliore. Nella programmazione integrata, i globali non occupano spazio nello stack e per questo motivo sono una buona scelta.

Globale o no, ho trovato una buona prassi mettere un prefisso su globals. Ciò renderà gli altri programmatori googling il tuo codice a conoscenza dell'impatto in caso di problemi con esso.

    
risposta data 19.01.2011 - 14:36
fonte
1

Forse quello che voleva il tuo capo era usare il Pattern Singleton. È molto utile quando devi accedere a un determinato oggetto da più istanze.

Questo è un link alla spiegazione di Wikidedia

    
risposta data 19.01.2011 - 14:47
fonte

Leggi altre domande sui tag