Recensione: “Code Complete” (II edizione)…

Intro

Era dai tempi della seconda edizione di “Modern Operating System” (*) di A. S. Tanembaum che non leggevo un libro “tecnico” così completo, interessante, divertente ed assolutamente utile.

Scheda del libro

  • Titolo: “Code Complete” (II edizione)
  • Sottotitolo: “A Practical Handbook of Software Construction
  • Autore: Steve McConnell
  • Editore: Microsoft Press
  • Anno: Giugno 2004
  • Lingua: inglese
  • Genere: libro “tecnico”
  • Categoria: ingegneria del software (software engineering), best practices
  • Argomenti trattati: ciclo di vita del codice (progettazione, creazione, manutenzione, debugging, code-tuning, refactoring, …)
  • Linguaggi trattati: principalmente C/C++, Java, Visual Basic; citati molti altri linguaggi (C#, Fortran, Ada, Perl, …)
  • Prezzo (su Amazon): scontato, $31.49 (prezzo pieno: $49.99)
  • Pubblico-target: tutti, dal programmatore alle prime armi al guru

Completo

In 950+ pagine, copre tutti (e sottolineo tutti) gli aspetti inerenti la progettazione, creazione, manutenzione, documentazione, code-tuning (ottimizzazione ma non solo), refactoring, … del codice.

L’autore entra spesso in dettaglio, analizzando estensivamente tutti i momenti del ciclo di vita del software e presentando contestualmente un elevato numero di esempi, nei più svariati linguaggi: C, C++, Java e VB sono la norma, ma si parla anche di Fortran, C#, …

Benchè la presenza degli esempi pratici, scritti nei diversi linguaggi, sia davvero cospicua, le tematiche affrontate sono universali (o universalmente applicabili).

Tutte gli argomenti risultano opportunamente ed adeguatamente sviscerati in maniera chiara ed i numerosi suggerimenti risultano immediatamente applicabili, con evidente profitto.

Ad esempio, parlando di routine e parametri…

Limit the number of a routine’s parameters to about seven
Seven is a magic number for people’s comprehension. Psychological research has found that people generally cannot keep track of more than about seven chunks of information at once (Miller 1956). This discovery has been applied to an enormous number of disciplines, and it seems safe to conjecture that most people can’t keep track of more than about seven routine parameters at once.

Interessante

A differenza di molti libri simili, il tono molto pragmatico e “non serioso”, rende il libro “avvincente” e veramente alla portata di tutti. Il punto di vista dell’autore appare fin da subito ben delineato e talvolta non risparmia battute pungenti all’indirizzo dei comuni “libri di testo” di informatica.

Ad esempio, parlando di ricorsione

Don’t use recursion for factorials or Fibonacci numbers
One problem with computer-science textbooks is that they present silly examples of recursion. The typical examples are computing a factorial or computing a Fibonacci sequence. Recursion is a powerful tool, and it’s really dumb to use it in either of those cases. If a programmer who worked for me used recursion to compute a factorial, I’d hire someone else.

Utile

Il sottotitolo del libro, “a practical handbook of software construction“, rende perfettamente la finalità del libro, ossia aiutare il lettore a rivedere e correggere il proprio stile di scrittura del codice.

I numerosissimi esempi, posti a corredo delle tematiche affrontate, sono spesso presentati in diversi linguaggi e spiegati in maniera chiara.

I suggerimenti forniti sono sempre motivati e documentati: abbondano informazioni su qualità del codice, tabelle con prestazioni reali (es: comparazioni fra codice scritto bene e male), citazioni/riferimenti bibliografici, …

Ad esempio, parlando della “distanza psicologica” fra i nomi delle variabili…

How “Psychological Distance” Can Help
Psychological distance can be defined as the ease with which two items can be differentiated. If you are looking at a long list of words and have been told that they’re all about ducks, you could easily mistake “Queck” for “Quack” because the two words look similar. The psychological distance between the words is small. You would be much less likely to mistake “Tuack” for “Quack” even though the difference is only one letter again. “Tuack” is less like “Quack” than “Queck” is because the first letter in a word is more prominent than the one in the middle.

Divertente

La trattazione è assolutamente godibile con uno stile amichevole e pulito ma non per questo meno preciso o dettagliato. Ad esempio, non manca di descrivere in maniera pungente chi si ostina a scrivere (e a difendere) codice palesemente orribile.

Un esempio di “coding horror“…

Avoid the names of standard types, variables, and routines
All programming-language guides contain lists of the language’s reserved and predefined names. Read the list occasionally to make sure you’re not stepping on the toes of the language you’re using. For example, the following code fragment is legal in PL/I, but you would be a certifiable idiot to use it:

if if = then then
then = else;
else else = if;

Conclusioni

Probabilmente vi accorgerete del valore di questo libro leggendone semplicemente la tavola dei contenuti (in realtà Amazon consente di leggerlo tutto online. SBAV!).

Tuttavia, al di là dei contenuti più “tecnici”, il libro contiene diverse “chicche”, che me l’hanno fatto davvero apprezzare.

Ad esempio mi è veramente piaciuto l’intero Capitolo 33, intitolato “Personal Character“, che parla di programmazione in termini della persona che sta dietro al codice.

Giusto per farvi capire cosa intendo…

Intellectual Honesty
Part of maturing as a programming professional is developing an uncompromising sense of intellectual honesty. Intellectual honesty commonly manifests itself in several ways:

  • Refusing to pretend you’re an expert when you’re not
  • Readily admitting your mistakes
  • Trying to understand a compiler warning rather than suppressing the message
  • Clearly understanding your program—not compiling it to see if it works
  • Providing realistic status reports
  • Providing realistic schedule estimates and holding your ground when management asks you to adjust them

Voto

Non resta che assegnare il voto…

Dato che 10 indica la perfezione assoluta ed utopica (ossia irraggiungibile), mi tocca fermarmi ed assegnare 9+ a questo libro: è veramente eccezionale. Straconsigliato.

(*): il 21 Dicembre 2007 scorso è uscita la terza edizione del libro di Tanembaum. Da comprare, appena scende di prezzo… Scrib scrib….

2 Risposte to this post.

  1. Grazie JP,
    me lo leggero’ con piacere!

  2. Posted by jp on 6 Marzo 2008 at 00:39

    Di nulla… ^^

Rispondi a questo post