Ottima
anche la decisione di presentare degli esempi di codice
da “non scrivere mai”: a parte la simpatica
faccina orripilata che accompagna tali esempi, è
interessante scoprire come spesso tali esempi infausti
si ritrovino nel codice cosiddetto “di produzione”
(ovvero installato presso il cliente e funzionante).
Questo fa capire che numerose insidie si possono nascondere
in maniera subdola e, a prima vista, difficilmente
appaiono nella loro pericolosità (a meno che
non facciano piantare il programma nel momento in
cui lo si installa dal cliente!).
Non spaventi l’ampiezza del libro (quasi mille
pagine): non è un romanzo che va letto da cima
a fondo! Si possono benissimo affrontare subito i
problemi che si sentono più “urgenti”,
anche se l’intero libro merita un’attenta
lettura per poterne apprezzare tutte le potenzialità.
Inoltre, come ogni buon libro che si rispetti, non
pretende di essere “onnisciente”: per
questo fornisce (al termine di ogni parte) utili riferimenti
a risorse per approfondire i temi trattati (tra l’altro,
in tutto il testo, ci sono link “interni”
al già citato sito http://cc2e.com con approfondimenti
mirati).
Inoltre non resta che sottoscrivere quanto detto dall’autore
a proposito del libro “Gran parte di questo
libro è una discussione delle pratiche di buona
programmazione. Non è concepito per essere
utilizzato per giustificare standard rigidi, e ancor
meno per essere utilizzato come insieme di standard
rigidi. Questo libro va usato come base per la discussione,
come riferimento per le pratiche di buona programmazione,
e per identificare le pratiche che possono essere
vantaggiose nel proprio ambiente.” (pag 664)
Ma ecco le diverse parti, ciascuna commentata per
le tematiche trattate:
Parte
I: Gettare le basi
Dopo aver definito cosa comprende l’attività
di “costruzione del software” (principalmente
codifica e debugging, ma anche design di dettaglio,
unit test, pianificazione e costruzione, integrazione
e molto altro…) non si può non introdurre
l’importanza dei pre-requisiti (che, nonostante
alcune metodologie cosiddette “agili”
tentino di sminuire, resta uno dei punti che tutti
i libri di ingegneria del software continuano a indicare
come fondamentali e che invece, puntualmente, sono
trascurati in gran parte dei progetti reali!).
Parte
II: Creare codice di alta qualità
Introduce dapprima i motivi per cui la costruzione
del software è un’attività intrinsecamente
complessa, per poi proporre delle strategie per gestire
e, in certi casi, mitigare tale complessità.
Inoltre vengono introdotte le tecniche di “programmazione
difensiva”, quali le asserzioni, le politiche
di gestione di errore (comprese le eccezioni) ed eventuali
ausili per il debug del codice.
Parte
III: Variabili
Può sembrare sorprendente come un’intera
parte del libro si possa concentrare sulle variabili.
Eppure è anche vero che esse permeano tutti
i programmi in qualsivoglia linguaggio di programmazione.
Ecco pertanto approfondite le problematiche relative
alla loro dichiarazione (visibilità, o binding,
problemi di inizializzazione) dalle convenzioni di
naming ai suggerimenti sull’uso dei diversi
tipi a disposizione.
Parte
IV: Istruzioni
Accanto alle istruzioni onnipresenti (costrutti di
selezione, cicli, uso della ricorsione,…) c’è
un interessantissimo e impedibile capitolo su “Metodi
basati su tabelle”, ovvero degli schemi per
la ricerca di informazioni da poter usare invece degli
usuali costrutti di controllo del linguaggio.
Parte
V: Migliorie al codice
Vengono riprese e approfondite le diverse dimensioni
che possono migliorare la “qualità”
del software e le tecniche per ottenere questo miglioramento.
Vengono illustrate le principali tecniche di test,
debug, refactoring, ottimizzazione (con utili consigli
su quando applicarle e quando evitarle!).
Parte
VI: Considerazioni di sistema
Questa parte è dedicata ai progetti di grosse
dimensioni e a come queste dimensioni influenzino
vari aspetti dello sviluppo del software; aspetti
che, se non vengono gestiti bene, portano inesorabilmente
al fallimento del progetto.
Parte
VII: Artigianato del software
La prima parte evidenzia come un codice che si “presenta
bene” (ovvero ben indentato, ben strutturato)
aiuti a capire la logica stessa del programma, ma
poi vengono mostrati esempi di codice auto-documentante
come ottimo supporto per chi “guardando”
al codice ne comprende il significato (a diversi livelli
di astrazione).
Pro: Un testo completo, ricco di esempi e scritto
in maniera chiara e adatta a qualsiasi programmatore
con buone basi di programmazione. Le tecniche descritte
sono illustrate con numerosi esempi, ma sono tecniche
così generali da essere valide per qualunque
linguaggio di programmazione utilizzato.
Contro:
nessuno da rilevare.
Parte I Gettare le basi
1 Benvenuti alla costruzione del software .... 3
2 Metafore per una migliore comprensione dello sviluppo
del software. 9
3 Misura due volte, poi taglia: prerequisiti preliminari.
23
4 Principali decisioni nella costruzione.... 61
Parte
II Creare codice di alta qualità
5 Design in costruzione 73
6 Classi al lavoro 125
7 Routine di alta qualità 161
8 Programmazione difensiva 187
9 Il processo di programmazione in pseudocodice (PPP)
215
Parte
III Variabili
10 Aspetti generali di utilizzo delle variabili 237
11 La potenza dei nomi delle variabili 259
12 Tipi di dati fondamentali 291
13 Tipi di dati insoliti 319
Parte
IV Istruzioni
14 Organizzazione sequenziale del codice 347
15 Utilizzo dei costrutti di selezione 355
16 Controllo dei cicli 367
17 Strutture di controllo insolite 391
18 Metodi basati su tabelle 411
19 Aspetti generali del controllo 431
Parte
V Migliorie al codice
20 Lo scenario della qualità del software 463
21 Costruzione collaborativa 479
22 Testing dello sviluppatore 499
23 Debugging 535
24 Refactoring 563
25 Strategie di ottimizzazione del codice 587
26 Tecniche di ottimizzazione del codice 609
Parte
VI Considerazioni di sistema
27 Come la dimensione del programma influenza la costruzione
649
28 Gestione della costruzione 661
29 Integrazione 689
30 Tool di programmazione 709
Parte
VII Artigianato del software
31 Layout e stile 729
32 Codice auto-documentante 777
33 Carattere personale 819
34 Tematiche dell’artigianato del software 837
35 Dove reperire ulteriori informazioni 855
|