Fondamenti di informatica
Oggetti e Java
Luca Cabibbo
Leggibilità
Capitolo 7
dicembre 2003
1
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Leggibilità
La leggibilità è una qualità del codice sorgente del software
facilità della comprensione nella lettura
influenza la modificabilità
2
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Stile e convenzioni di codifica
Una convenzione di codifica è una indicazione di carattere
stilistico da adottare nella scrittura dei programmi
ad esempio, far precedere la definizione di una classe da un
commento che descrive lo scopo della classe
Un insieme di convenzioni di codifica è una guida stilistica
completa per la scrittura dei programmi
si osservi la distinzione tra
linguaggio di programmazione
convenzioni di codifica
Un buon insieme di convenzioni di codifica
aumenta la leggibilità delle classi
disciplina e semplifica il lavoro del programmatore
favorisce la leggibilità di programmi scritti da persone diverse
3
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Un brutto stile di programmazione
/* Applicazione che visualizza una frase sullo schermo. */ class
ScrittoreSulloSchermo { public static void main(String[] args) {
System.out.println("ciao a tutti"); System.
out.println("questo testo introduce"); System.out.println(
"i fondamenti dell'informatica");}}
4
è un programma corretto
è difficile da comprendere
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Elementi stilistici della programmazione
Alcuni importanti elementi di stile sono
commenti
scelta dei nomi
indentazione
ordine delle dichiarazioni e delle istruzioni
repertorio di istruzioni adottato
5
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Commenti
Un commento è una frase che documenta una porzione di
codice, illustrandone lo scopo oppure il significato
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("ciao a tutti");
System.out.println("questo testo introduce");
System.out.println("i fondamenti dell'informatica");
}
}
6
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Tipologie di commenti
Commenti documentazione
descrivono che cosa si sta facendo
Commenti implementazione
descrivono come si sta facendo una cosa
Commenti asserzione
descrivono proprietà valide durante l’esecuzione del codice
7
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Tipologie di commenti
/**
commento
documentazione
* Applicazione che calcola e visualizza
* la radice quadrata di 144.
*/
class RadiceQuadrata {
public static void main(String[] args) {
double radice;
// la radice quadrata da calcolare
/* calcola la radice quadrata di 144 */
radice = Math.sqrt(144);
/* ora radice vale 12 */
commenti
System.out.println(radice);
implementazione
}
}
commento asserzione
8
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Formato dei commenti
Formati per i commenti
formato tradizionale
formato di linea
formato documentazione
formato
/**
documentazione
* Applicazione che calcola e visualizza
* la radice quadrata di 144.
*/
formato di linea
class RadiceQuadrata {
public static void main(String[] args) {
double radice;
// la radice quadrata da calcolare
/* calcola la radice quadrata di 144 */
radice = Math.sqrt(144);
/* ora radice vale 12 */
formato tradizionale
System.out.println(radice);
}
}
9
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Scopo dei commenti
I commenti hanno lo scopo di
fornire una panoramica sul codice
descrivere informazioni rilevanti per la comprensione del
codice
descrivere porzioni di codice altrimenti oscure
descrivere proprietà che si assumono verificate durante
l’esecuzione del codice
I commenti non devono fornire informazioni immediatamente
comprensibili dal codice stesso
10
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Che cosa commentare
Una classe applicazione
preceduta da un commento documentazione che descrive che
cosa fa l’applicazione
Un metodo
preceduto da un commento documentazione che descrive che
cosa fa il metodo
Un metodo contiene anche i seguenti commenti
commenti implementazione che descrivono l’algoritmo
implementato dal metodo
un commento implementazione per ciascuna variabile
eventuali commenti asserzione
11
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Scelta dei nomi
I nomi delle classi, dei metodi e delle variabili sono identificatori
ad esempio, pippo, grunt, abracadabra, pi555,
ScRiTtOrEsUlLoScHeRmO
È bene scegliere nomi che siano significativi e autodocumentanti
i nomi delle classi e delle variabili sono sostantivi
ScrittoreSulloSchermo, radice, somma,
contatoreNumeriPositivi
i nomi dei metodi sono “frasi verbali”
ad esempio, stampa, calcolaSomma
si noti l’uso delle maiuscole e delle minuscole
12
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Indentazione
Indentare vuol dire
evidenziare la relazione di contenimento tra diverse porzioni
del codice mediante un opportuno incolonnamento
Esempio di programma non indentato
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("ciao a tutti");
System.out.println("questo testo introduce");
System.out.println("i fondamenti dell'informatica");
}
}
13
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Indentazione e contenimento
L’indentazione evidenzia la relazione di contenimento tra le
diverse porzioni del codice
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("ciao a tutti");
System.out.println("questo testo introduce");
System.out.println("i fondamenti dell'informatica");
}
}
14
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Regole per l’indentazione
Un elemento contenuto va scritto con un rientro (una spaziatura)
maggiore dell’elemento che lo contiene
le principali relazioni di contenimento
metodi (costruttori o variabili) entro una classe
variabili e istruzioni entro un metodo
istruzioni entro un’altra istruzione
incrementi di spaziatura di 4 spazi
elementi allo stesso livello gerarchico devono essere allineati
(a sinistra) allo stesso modo, ovvero, con lo stesso rientro
15
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Parentesi graffe
/* Applicazione che calcola e visualizza
* la radice quadrata di 144. */
class RadiceQuadrata {
public static void main(String[] args) {
double radice;
radice = Math.sqrt(144);
System.out.println(radice);
}
}
16
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Istruzioni su più righe
Le linee di codice non devono superare le dimensioni orizzontali
della finestra in cui viene editato e visualizzato
la larghezza di una finestra di editing è di solito di 72 caratteri
perimetro = Misuratore.distanza(x1, y1, x2, y2) +
Misuratore.distanza(x1, y1, x3, y3) +
Misuratore.distanza(x2, y2, x3, y3);
17
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Ordine delle istruzioni e delle dichiarazioni
In un metodo, le diverse tipologie di istruzioni e dichiarazioni
possono apparire in ordine qualsiasi
con alcuni vincoli semantici
Convenzioni di codifica
ciascuna linea di codice contiene una sola istruzione semplice
o dichiarazione
le dichiarazioni di variabili locali sono raggruppate all’inizio di
ciascun metodo
18
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl
Repertorio di istruzioni
Java fornisce un insieme di istruzioni molto ampio
l’uso dell’intero repertorio di istruzioni di Java può essere
controproducente
in pratica
Java viene presentato solo in modo parziale (decaffeinato)
programmazione strutturata
19
Leggibilità
Luca Cabibbo – Fondamenti di informatica: Oggetti e Java
Copyright © 2004 – The McGraw-Hill Companies srl