Bit a bit, si cresce sempre


Blog di un ingeformatico
Statistiche
  • Views Home Page: 515.517
  • Views Posts: 1.632.797
  • Views Gallerie: 830.897
  • n° Posts: 520
  • n° Commenti: 301
Ora e Data
Archivio Posts
Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

Recensione libro Solid Code (Microsoft Press)

Dopo il famoso testo del 2004 “Code Complete” di Steve McConnell su cui schiere di programmatori si sono consumati gli occhi cercando di capire come scriver codice di qualità, era ora che la Microsoft Press desse finalmente alle stampe un nuovo testo, più aggiornato ai tempi moderni. Dico subito che questo testo, dei due pur bravissimi autori Donis Mashall (suo il testo “Visual C# 2008: The Language” che ho recensito qualche mese fa) e John Bruno, non ha il “peso” (inteso anche in senso fisico) e l’imponenza del suo predecessore, ma nemmeno la sua intrinseca difficoltà.

Solid Code”, infatti, rappresenta una valida lettura che qualunque programmatore .NET con una certa esperienza, può portare a termine in un sola settimana (più o meno ci vuole un’ora e mezza per leggere ognuno dei 12 capitoli).

A ciò aiuta la scarsa presenza di codice, e il numero di pagine limitato (poco più di 300).

 

Il testo si caratterizza infatti per essere molto discorsivo, quasi da romanzo. L’inglese, grazie al cielo, è abbastanza abbordabile, e solo qualche volta mi è capitato di ricorrere al dizionario per conoscere il significato di una parola mai vista.

Meglio comunque che si sappia prima: chi cerca testi di tanto codice da mettere in pratica, con questo rimarrà sicuramente deluso. Le pagine con esempi sono la minoranza.

Come resterà deluso anche chi si aspetta di trovare procedure passo per passo su come implementare test automatici, o prove di performance, o report sull’analisi del codice, e così via.

Saltuariamente può capitare qualche paragrafo che mostra come si usa un tool (come ad esempio per il CLR Profiler nel capitolo 7), ma questo non rientra negli scopi del libro, che è invece quello di riassumere una serie di Best Practices sullo sviluppo nella piattaforma .NET (e che è già un obiettivo ambizioso, a mio modo di vedere). 

 

Il focus principale comunque rimane sempre quello: cosa deve sapere un programmatore per scrivere codice C# (gli esempi sono tutti in questo linguaggio) in ambiente .NET in modo che sia il “migliore” possibile?

Sotto la denominazione “migliore” rientrano tutta una serie di parametri, ognuno di essi spiegato ed analizzato in ciascuno dei dodici capitoli.

È da rimarcare un plus notevole di questo testo: gli autori sono entrambi di Microsoft, e in quasi tutti i capitoli, per illustrare in pratica quanto affermato agli inizi degli stessi, prendono esempi da varie applicazioni Microsoft, e spiegano come i team di sviluppo di Redmond abbiano messo in pratica i consigli forniti.

Questo potrebbe rispondere alla domanda che tanti si fanno: ma come sviluppano il software in Microsoft?

Il libro in questione da’ una sia pur parziale risposta a questa domanda.

 

Ogni capitolo termina con un breve sommario e una serie di punti chiave (“Key Points”) che riassumono i concetti espressi nel capitolo stesso. Le schermate sono tutte prese dalla versione maggiore (Team System) di Visual Studio 2008 (e non poteva essere altrimenti, essendo la casa editrice la Microsoft Press e gli autori dipendenti di Microsoft Corporation).

 

Nel capitolo 2 si fa qualche accenno a UML, giusto per accompagnare i discorsi sul design delle applicazioni. Si mostrano anche esempi passo per passo utilizzando Visio 2007; questa è una scelta un po’ forte, dato che non tutti i lettori possono disporre di questo programma (che, ricordo, è a pagamento, e non incluso nella versione base di Office 2007). Per chi non lo possiede, il saltare le parti in cui si mostra come si utilizza, non credo sia una grande perdita, e non influisce negativamente sul proseguimento del libro.

Si prosegue poi con il “metaprogramming”, ovvero programmare con l’utilizzo dei metadati, informazioni di configurazione che possono rendere le applicazioni snelle e configurabili senza “intaccare” il codice business.

Anche in questo capitolo si svelano i segreti di come si lavora in Microsoft riguardo a queste problematiche, e si prende come riferimento il team di Windows Live Spaces.

 

I capitoli 4, 5 e 6 affrontano rispettivamente le performance, la scalabilità e la sicurezza delle applicazioni software. Per questi tre capitoli non c’è codice disponibile, dato che sono prettamente discorsivi e non eccessivamente lunghi (sulla ventina di pagine ciascuno). Molto valido soprattutto il quarto capitolo, dove si possono imparare diversi trucchi e strade da percorrere per aumentare le performance del software, in particolare applicazioni web.

 

I capitoli 7 e 8 sono altre due perle di saggezza (e di ottimi consigli pratici). Nel primo si parla della gestione della memoria e del Garbage Collector. Nelle sue 27 pagine si spiega come gli oggetti, piccoli e di grandi dimensioni, occupino la memoria dell’applicazione (e del pc), come “vivono” e cosa fare per evitare colli di bottiglia dovuti all’intasamento della memoria stessa. Si mostra anche come utilizzare un ottimo piccolo e gratuito tool della Microsoft, il “CLR Profiler”, per avere dettagli e statistiche sugli oggetti “managed” (al riguardo il codice sorgente fornisce due piccole applicazioni Windows pronte per essere testate con questo tool).

Nel capitolo 8 invece, dal titolo promettente “Defensive Programming”, si passano in rassegna una serie di consigli di “buona programmazione”. Questo capitolo – di 29 pagine – non ha codice sorgente ma, posso assicurare, si fa leggere come se fosse un romanzo. Un “buon” programmatore ritroverà in esso consigli e buone abitudini di cui fa già uso, ma sicuramente qualche novità (o tecnica a cui non si era mai pensato) balzerà fuori. Da fotocopiare e incorniciare le regole riportate alle pagine 191 e 192: da sole valgono mezzo libro. In questo capitolo si nota la mano di Donis Marshall; gli esempi di codice, infatti, riportano le classi nella forma “XClass”, “YClass” e le variabili come “locala”, “localb”, ecc., proprio come nel suo libro “Visual C# 2008: The Language.

 

Si prosegue poi analizzando il debug (il capitolo più lungo, e non c’era da meravigliarsi, considerando la forte specializzazione su questo argomento da parte di Donis Marshall), e soprattutto il “Code Analysis”, dove si torna a parlare di test e si porta come esempio proprio il sito web di Microsoft.com.

 

Il dodicesimo ed ultimo capitolo tira le fila dei discorsi fino a quel punto portati avanti, mentre due microappendici (una pagina ciascuna) riportano dei link dove approfondire i concetti sulle metodologie agili (sono link ad altri libri Microsoft Press) e sul debug delle applicazioni web.

 

L’impaginazione è ottima: tipo di font molto leggibile e della dimensione giusta, codice ben indentato e immagini definite, anche se poche come numerosità (e sono tratte dalla versione Team System di Visual Studio 2008).

 

L’ultima pagina del dodicesimo capitolo termina esattamente a pag. 300. Questa è una buona cosa.

Se fosse stato più corto, sarebbe stato troppo semplicistico e riduttivo; se fosse stato più lungo avrebbe diluito troppo i concetti, non consentendo al lettore di focalizzarsi (e ricordare) i punti chiave e i concetti fondamentali.

La lunghezza è quindi ideale e gli autori hanno operato una buona scelta (che sia voluta o meno non è dato di sapere).

 

Malgrado il mio inglese non sia madrelingua (purtroppo!) non ho trovato refusi di alcun tipo: segno che il revisore tecnico (a cura della società Content Master) ha svolto bene il suo compito.

La rilegatura del testo è davvero ottimale: flessibile a sufficienza, in modo da tenere aperto senza fatica il testo sulla scrivania. La carta è un po’ ruvida, ma ha come vantaggio di pesare molto poco (il libro infatti è molto leggero), e di non creare riflessi fastidiosi.

Il prezzo – 40 dollari – mi pare adeguato al contenuto offerto (su Amazon, comunque, viene sempre venduto con sostanziosi sconti).

 

Questa è la pagina del sito dedicata al libro: 

da qua si scarica un file .exe di circa 6 MB.

Una volta installato apparirà la voce “Microsoft Press” -> “Solid Code” nel menu Programmi, e qui si potrà accedere al codice dei capitoli: 2-3-7-10-11.

Il codice C# è ottimamente indentato e commentato, un po’ meno quello aspx.

 

Concludendo posso dire che è stata una lettura piacevole, ricca di spunti o di conferme a quanto si sapeva già o si intuiva di sapere. Altamente raccomandabile per tutti i “Dev”, che aspirano – appunto – a scrivere codice “solid”.

 

 

PRO

“Quality Code” sarebbe il nome che io avrei dato a questo testo, espressamente dedicato a come scrivere codice di qualità. E la qualità di questa esposizione è molto valida, si lascia leggere con piacere e fornisce spunti di riflessione molto interessanti anche a chi pensa di non dover imparare nulla di nuovo da un libro come questo.

Una lettura direi obbligata per ogni sviluppatore che si vuole ritenere tale.

Ottimi impaginazione e rilegatura.

 

 

CONTRO

Onestamente nulla di grave da segnalare. Basta solo ricordare che: gli esempi sono solo in C# (manca quindi VB.NET), ed essi stessi non sono tantissimi.

 

Voto complessivo: 9/10

 

Lettore: Intermedio

 

Summary

1 – Cap. 1: Code Quality in an Agile World

19 – Cap. 2: Class Design and Prototyping

49 – Cap. 3: Metaprogramming

71 – Cap. 4: Performance is a feature

97 – Cap. 5: Designing for Scale

121 – Cap. 6: Security Design and Implementation

143 – Cap. 7: Managed Memory Model

171 – Cap. 8: Defensive Programming

201 – Cap. 9: Debugging

239 – Cap. 10: Code Analysis

263 – Cap. 11: Improving Engineering Processes

287 – Cap. 12: Attitude is Everything

301 – Appendix A: Agile Development Resources

303 – Appendix B: Web Performance Resources

 

PROS

“Quality code” is the name that I would have given this text expressly dedicated to how to write quality code. And the quality of this exposure is very good; it  is read with pleasure and provides interesting food for thought to those who thinks of not having to learn anything new from a book like this.

I would say a reading for each developer that want to consider himself a real developer.

Good layout and binding.

 

CONS

Honestly nothing serious to report. Just point out that: examples are only in C# (VB.NET not present) and themselves are not so many.

Categoria: Books
lunedì, 11 mag 2009 Ore. 12.00

Messaggi collegati


Meteo
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003