3: Organizzazione del codice
3.1 Scoping
Lo scoping si riferisce alla visibilità e alla durata di vita di variabili e funzioni all'interno di un programma. Definisce il contesto in cui le variabili e le funzioni possono essere accedute o modificate all'interno di un codice.
Tipi di Scoping
Scoping Globale: Le variabili definite al di fuori di tutte le funzioni sono considerate variabili globali e sono accessibili da qualsiasi parte del programma. Queste variabili sono visibili in tutto il programma, ma è importante usarle con cautela poiché possono essere modificate da qualsiasi parte del codice e possono causare effetti collaterali indesiderati.
python
Copy code
variabile_globale = 10
def funzione():
print(variabile_globale) # Accesso alla variabile globale
funzione() # Output: 10
Scoping Locale: Le variabili definite all'interno di una funzione sono considerate variabili locali e hanno una visibilità limitata al corpo della funzione in cui sono state definite. Queste variabili esistono solo all'interno della funzione e non possono essere accedute dall'esterno.
python
Copy code
def funzione():
variabile_locale = 5 # Variabile locale
print(variabile_locale)
funzione() # Output: 5
print(variabile_locale) # Errore: variabile_locale non definita globalmente
Scoping non-locale (Enclosing): In alcuni linguaggi di programmazione come Python, è possibile avere funzioni annidate. Le variabili all'interno di una funzione annidata possono essere considerate non-locali se non sono né globali né locali. In Python, si può utilizzare la parola chiave nonlocal per accedere e modificare le variabili non locali.
python
Copy code
def esterna():
variabile_non_locale = 15
def interna():
nonlocal variabile_non_locale
variabile_non_locale += 5
print(variabile_non_locale)
interna() # Output: 20
esterna()
Visibilità delle Funzioni
Le funzioni seguono regole simili per quanto riguarda la visibilità. Possono essere definite globalmente o all'interno di altre funzioni e la loro visibilità segue le stesse regole di scoping delle variabili.
python
Copy code
def esterna():
print("Funzione esterna")
def interna():
print("Funzione interna")
interna() # Output: Funzione interna
esterna() # Output: Funzione esterna
interna() # Errore: la funzione interna non è definita globalmente
Una comprensione chiara dello scoping è fondamentale per evitare errori, garantire l'uso corretto delle variabili e delle funzioni, e scrivere codice che sia chiaro e manutenibile. È importante considerare attentamente l'ambito di variabili e funzioni quando si sviluppa un programma per evitare problemi di conflitto di nomi e comportamenti inaspettati delle variabili.
3.2 Convenzioni di formattazione
Importanza dell'indentazione, allineamento, spazi bianchi e commenti.
Convenzioni di formattazione:
Le convenzioni di formattazione, come l'indentazione, l'allineamento, l'uso di parentesi graffe, spazi bianchi, ecc., influenzano la leggibilità del codice ma non sono strettamente parte della sintassi del linguaggio.
Le convenzioni di formattazione sono regole e pratiche che determinano la struttura visiva del codice sorgente. Queste convenzioni non sono strettamente parte della sintassi del linguaggio, ma hanno un impatto significativo sulla leggibilità e sulla comprensione del codice da parte degli sviluppatori.
Ecco alcune convenzioni di formattazione comuni:
Indentazione:
Spazi bianchi e Tabulazioni:
L'indentazione viene utilizzata per mostrare la struttura e l'annidamento del codice.
La scelta tra l'uso di spazi o di tabulazioni per l'indentazione può variare da una comunità di sviluppo all'altra.
Allineamento:
Allineamento degli elementi:
L'allineamento viene utilizzato per migliorare la leggibilità allineando gli elementi del codice in colonne verticali, come ad esempio l'allineamento dei segni di uguale o dei punti e virgola.
Uso delle parentesi graffe:
Stile di formattazione delle parentesi graffe:
Le parentesi graffe vengono utilizzate per delimitare blocchi di codice, e lo stile preferito per la posizione delle parentesi può variare tra le comunità di sviluppatori.
Stili comuni includono stili K&R, Allman, GNU, ecc.
Spazi bianchi e vuoti:
Spazi tra le parole chiave, operatori e parentesi:
L'uso di spazi bianchi può migliorare la leggibilità aggiungendo spazi tra le parole chiave, operatori e parentesi.
Ad esempio, if (condizione) è più leggibile di if(condizione).
Lunghezza delle righe:
Limitazione della lunghezza delle righe:
Limitare la lunghezza delle righe del codice per migliorare la leggibilità, specialmente quando il codice deve essere visualizzato su schermi di dimensioni limitate.
Commenti e documentazione:
Stile dei commenti:
Un uso coerente e significativo dei commenti per spiegare parti complesse del codice, annotazioni o documentazione.
Esempio di convenzioni di formattazione in Python:
python
Copy code
def funzione_esempio(arg1, arg2):
if arg1 == 0:
print("Arg1 è zero")
else:
risultato = arg1 + arg2
return risultato
# Questo è un commento esplicativo sopra la funzione
Importanza delle convenzioni di formattazione:
Le convenzioni di formattazione possono sembrare solo aspetti visivi, ma hanno un impatto significativo sulla leggibilità e sulla manutenibilità del codice. Utilizzare convenzioni di formattazione coerenti e chiare consente agli sviluppatori di comprendere più facilmente il codice, facilita la collaborazione all'interno del team e promuove uno standard di codifica uniforme all'interno di un progetto o di una comunità di sviluppo.
Una sintassi ben definita rende più agevole la comprensione e la scrittura del codice, oltre a garantire la correttezza sintattica del programma. L'assenza di conformità alla sintassi del linguaggio può causare errori durante la compilazione o l'esecuzione del codice. Pertanto, è essenziale comprendere la sintassi di un linguaggio per scrivere codice corretto e funzionale.
Nessun commento:
Posta un commento