Ero proprio curioso di leggere questo recentissimo piccolo libro edito dalla O’Reilly.
Il motivo è presto detto: come scrivere codice migliore.
Praticamente come scrivere un libro su come si cucina meglio. Quale cuoco potrebbe resistere alla sua lettura?
L’idea su cui si basano i due autori è che il codice “migliore” è il codice che richiede meno tempo per essere compreso, e questo senza prendere in considerazione altri fattori: velocità di esecuzione, refactoring avanzato, riusabilità e attenzione alle eccezioni.
Il codice che scriviamo deve parlare da sé, farsi subito capire da altri sviluppatori (e questi “altri” potremmo essere noi tra 6 mesi).
Non si entra in discorsi di alta ingegneria: design patterns, scelte architetturali, piattaforme e quant’altro viene lasciato fuori dal discorso, che è molto più pragmatico e si basa sull’effettivo codice.
Quest’ultimo, ahimè, viene riportato in un’infinità di linguaggi tranne che in C# e VB, e questo fatto ha limitato non poco la completa mio comprensibilità dei discorsi portati avanti lungo i 15 brevi capitoli del libro.
Gli esempi di codice sono scritti in C/C++, Java, Javascript, PHP e persino Python, ma nulla nei linguaggi del .NET Framework.
Molto piacevole, in compenso, l’approccio estremamente informale, ricco di aneddoti, note a margine, rimandi, persino vignette, come si vede da queste due pagine prese a caso nel libro.
Anche per la grande informalità, l’inglese utilizzato dagli autori non sempre è pienamente comprensibile.
Ogni tanto appare qualche termine di uso poco comune (che richiede l’intervento del dizionario).
Non ci sono schermate di Visual Studio, né di nessun altro editor. Tutti i ragionamenti e i consigli vengono portati avanti con piccoli snippet di codice (per altro sempre ben indentati, tranne nei rari casi in cui si vuole proprio mettere in luce una cattiva indentatura!).
Si parte da argomenti basilari e validi per chiunque in qualsiasi situazione, ovvero, come è meglio scrivere le variabili? Che nome assegnare a classi e metodi? Servono i commenti? E quanti ne devo mettere?
Come è meglio strutturare i cicli? Assegno o non assegno valori iniziali? Meglio scrivere blocchi grandi, che fanno tutto, o agganciare piccoli blocchi specializzati? E così via, di argomenti non ne mancano di certo.
Per ognuno di essi gli autori riportano l’idea base e, con l’aiuto di esempi di codice, spiegano perché sarebbe meglio scriverli diversamente.
Alcune idee, per chi programma ormai da anni, sono ben risapute ed anche già adottate, ma sono certo che anche i professionisti più navigati potranno recuperare qualche indicazione utile o idea mai presa in considerazione.
Nell’ultimo capitolo del libro, il 15esimo, si mostra un piccolo progetto (in C++) creato da zero seguendo tutti i consigli elargiti nelle pagine precedenti, e queste sono pagine assolutamente da non saltare.
Qua sotto i dettagli del libro. Notare come il numero di pagine sia limitato a circa 200, garanzia di lettura veloce e rapida.
La rilegatura è decisamente rigida, pur nelle piccole dimensioni del libro, tant’è che dopo poco tempo la copertina tenderà a prendere strade sue.
Eccellente invece la scelta del font, un Adobe Meridien, con la giusta (piccola) dimensione.
Insieme all’impaginazione impeccabile, aumenta di parecchio la piacevolezza di lettura.
Molto utili la 4 pagine dell’appendice che riportano i libri attualmente disponibili per approfondire l’argomento su come si scrive buon codice. Alcuni di essi sono vere pietre miliari degli anni passati (come “Code Complete” e “Pragmatic Programmer”), mentre altri sono meno conosciuti.
Un plauso alla scelta degli autori di riportare giusto due righe di commento per ognuno di essi: rendono le bibliografie meno asettiche e certamente più interessanti.
Gli autori, per una volta tanto non sono MVP Microsoft, ma provengono entrambi dal mondo Google (e forse questo spiega la loro scelta dei linguaggi degli esempi di codice).
Qua sotto un’immagine che ne riassume le loro esperienze.
Per concludere, il libro è senz’altro raccomandabile se sta a cuore scrivere codice migliore (e chi non lo vorrebbe?).
La brevità del libro, unita alla grande presenza di spazio bianco e vignette, lo rende leggibile nella sua interezza tranquillamente in un solo weekend, anche se poi ciò che si legge andrà meditato con calma, e soprattutto messo in pratica, e questo richiederà più tempo.
Peccato (almeno per me, ma per altri potrà non essere un problema) la scelta di non utilizzare C# (o almeno VB), ma tutt’altri linguaggi.
Le idee – e le vignette – si comprendono comunque, e fanno questo libro una risorsa direi indispensabile per ogni buon programmatore.
Un libro da leggere e rileggere ad intervalli regolari (giusto per un refresh della propria memoria).
Sommario
Chapter 1 : Code Should Be Easy to Understand
Chapter 2 : Packing Information into Names
Chapter 3 : Names That Can’t Be Misconstrued
Chapter 4 : Aesthetics
Chapter 5 : Knowing What to Comment
Chapter 6 : Making Comments Precise and Compact
Chapter 7 : Making Control Flow Easy to Read
Chapter 8 : Breaking Down Giant Expressions
Chapter 9 : Variables and Readability
Chapter 10 : Extracting Unrelated Subproblems
Chapter 11 : One Task at a Time
Chapter 12 : Turning Thoughts into Code
Chapter 13 : Writing Less Code
Chapter 14 : Testing and Readability
Chapter 15 : Designing and Implementing a “Minute/Hour Counter”
Appendix : Further Reading
Su Amazon Italia, purtroppo, non è attualmente disponibile.