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