Cosa significa l'autore di Code Complete quando si parla di nascondere dati globali?


25

Nella sezione 6.4 di Code Complete 2nd Edition c'è un paragrafo su come nascondere i dati globali. Ciò a cui sono particolarmente interessato è che McConnell (l'autore del libro) fornisce esempi dei vantaggi di nascondere i dati globali. C'è un esempio che non riesco a capire. Non ho la versione inglese del libro, quindi proverò a tradurre il testo.

Nascondere i dati globali. (...) È possibile modificare la struttura dei dati senza modificare il programma.

Cosa vuol dire McConnell? Sta parlando di cambiare i dati globali? In tal caso, perché non dovresti modificare il tuo programma quando usi metodi per recuperare quei dati? O forse si sta riferendo a qualcos'altro qui?

Gradirei molto se qualcuno potesse chiarire la mia confusione. Se anche tu potessi fornire un esempio, sarebbe fantastico (gli esempi sono fantastici, lo sai).

Risposte:


44

L'autore sta parlando della struttura dei dati globali e di come la modifica di tale struttura avrebbe un impatto sul codice che lo utilizza.

Se i dati globali sono accessibili direttamente, la modifica della struttura dei dati implica potenzialmente la necessità di modificare tutto il codice che li utilizza.

Se i dati globali sono accessibili solo tramite un'interfaccia (ad es. Un insieme di funzioni), cambiare la struttura implica solo cambiare questi accessori. Il resto del codice non deve cambiare.

Come semplice esempio sarebbe il codice che inizia con un array di numeri interi (un esempio static int[]in una classe Java). Se quell'array è accessibile a livello globale, le persone inizieranno a usarlo con la sintassi dell'array (ad es Global.cool_stuff[x] = 1;.). Se per qualche motivo vuoi cambiare quell'array in un tipo di raccolta (vettore, elenco, qualunque cosa), allora devi cambiare tutto il codice che utilizza questo pezzo di dati globali poiché è diventato, almeno sintatticamente, non valido.

Se quei dati fossero stati accessibili solo tramite un set di funzioni accessor / mutator ("nascosto dietro" un'interfaccia), allora dovresti solo cambiare quel piccolo set di funzioni. Il codice che utilizza effettivamente i dati può rimanere invariato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.