E’ la seconda volta che mi capita di recensire un libro della Packt, questa piccola casa editrice inglese (la sede è a Birmingham) specializzata in argomenti open source e di nicchia, ma che offre anche un piccolo catalogo su .NET e dintorni. L’autore di questa compatta (sole 250 pagine) guida introduttiva su LINQ è uno sviluppatore indiano. Non deve sorprendere la cosa: la Packt ha tra le sue fila molti esponenti della cultura informatica di quel paese, e la loro seconda sede è proprio dislocata a Mumbay (posto poco sicuro ultimamente, ma questo esula dal discorso).
Come dice il titolo, questo libro è una rapida carrellata delle potenzialità di LINQ. La teoria è ridotta al minimo sindacale, e abbondano gli esempi di codice e le esercitazioni. La sua lettura è quindi consigliata tenendolo davanti al pc e provando subito a scrivere gli esempi riportati.
Il primo capitolo, oltre ad una breve introduzione generale su cosa sia LINQ, illustra, con esempi, le novità introdotte nella versione 3.0 di C# (linguaggio utilizzato per tutto il codice). Si parla quindi di “Anonymous Types”, “Object Initializers”, “Collection Initializers”, “Partial Methods”, “Implicitly Typed Local Variables” e infine “Expressions” di tipo “Lambda”, “Query” e “Trees”.
Come si può intuire questo capitolo può costituire un mini corso sulle novità di C# 3.0, oppure un rapido ripasso per chi le ha già viste da qualche tempo.
Gli esempi di questo capitolo, e di quasi tutto il libro, si basano su di un classe “Icecream” (gelato). Questa, secondo me, viene sempre riportata con un numero eccessivo di proprietà (totale Carboidrati, totale Grassi, colesterolo, proteine, ecc.) che “intasano” e allungano inutilmente gli snippet di codice, senza portare vero valore aggiunto al discorso.
L’indentazione del codice stesso, a causa di tutte queste proprietà, scende sotto un livello accettabile, e spesso si fa fatica a leggere anche solo 10 righe di esempio. Purtroppo queste sono gravi carenze che si ripeteranno (e ripercuoteranno) anche sui restanti capitoli.
Dopo il secondo breve (solo 8 pagine) capitolo dedicato a LINQ to Objects, l’autore nel terzo ben più corposo capitolo (43 pagine) tratta LINQ to XML. Si può dire che questo capitolo è il vero punto forte del libro, dato che la trattazione del mondo XML è piuttosto approfondita (e sarebbe auspicabile che chi prenda in mano questo libro non ne sia completamente a digiuno), e vengono forniti parecchi esempi per le operazioni più comuni sui file XML (creazione, update, delete, e salvataggio in vari formati).
Il quarto ancor più lungo capitolo (ben 64 pagine) tratta del dialetto LINQ più famoso e forse più utilizzato, almeno fin’ora, ovvero LINQ to SQL.
Anche qua la trattazione procede dando ampio spazio ai pezzi di codice e limitando la teoria fino a dove è possibile. Fino a questo punto del libro le immagini sono state rarissime, ma metà del capitolo di LINQ to SQL è dedicata al designer di Visual Studio 2008, e ci sono parecchi screenshot dei passi necessari per creare le entità partendo dal database (anche questo mancante nel codice scaricabile).
Il terzo e quarto capitolo, da soli, costituiscono metà del libro, e forniscono un sufficiente approfondimento di questi due dialetti di LINQ. Se proprio si può muovere un appunto si può segnalare la mancanza, nel codice scaricabile, di tutti i file di esempio (quelli sui gelati, per intenderci) utilizzati negli snippet di codice. Sarebbe stato molto più utile e comodo averli già disponibili, piuttosto che doverseli riscrivere tutti.
Ogni capitolo termina con un breve sommario; non ci sono esercizi né domande di riepilogo.
Concludono il testo due brevi appendici: la prima spiega come realizzare una semplice applicazione web che fa uso di una dropdownlist e di una grid per visualizzare i tipi di gelato (prelevati dal database con delle Linq query), mentre la seconda, molto breve (3 pagine) crea una “console application” per prelevare i contatti da un account di posta su Outlook.
L’impaginazione e la formattazione del testo è un po’ scarna. Il carattere è leggermente fuori misura come grandezza, ed oltre al grassetto non viene usato nient’altro per rendere più accattivante e piacevole la lettura.
L’inglese utilizzato, forse dovuto anche al fatto che l’autore non è madrelingua, è molto comprensibile, e non si fa fatica a seguire il discorso.
Questa è la pagina del sito dove è presente la scheda dettaglia del libro. Da qua si possono scaricare, in formato Pdf, il sommario e il capitolo 6 (19 pagine totali).
Per quanto riguarda il codice sorgente invece, bisogna prima inserire il proprio indirizzo mail, per poi ricevere un link che da’ accesso diretto al download del file (di piccole dimensioni, soli 16 kB).
Il pacchetto non è però organizzato bene. È suddiviso in capitoli, ma all’interno di ogni capitolo è ripetuto lo stesso capitolo, fino ad arrivare finalmente all’unico file (program.cs) riportante tutti gli esempi uno di seguito all’altro (tra l’altro per il secondo capitolo il file è in semplice formato di testo). Viene anche sempre riportato lo stesso file “Readme.txt”, con il medesimo contenuto (“The Program file contains all the code snippets in the form of a program.”): una ripetizione inutile.
Concludendo si può affermare che questo libro è un buon punto di partenza per ottenere una prima rapida infarinatura di LINQ, soprattutto per chi è spaventato dalla mole degli altri libri su tale argomento in circolazione. Il titolo “LINQ Quickly” non mente quindi.
Una volta approfondito l’argomento – magari su altri libri di ben diverso spessore (in tutti i sensi) – può costituire una valida reference da tenere sulla scrivania a fianco del computer per veloci e rapidi ripassi sulla sintassi, grazie soprattutto al suo valido ultimo capitolo.
PRO
La notevole leggibilità, l’attenzione che l’autore rivolge agli aspetti pratici (“il saper fare”) di LINQ, e il buon numero di esempi offerti sono le principali caratteristiche positive di questo maneggevole libretto.
L’inglese utilizzato è estremamente semplice, e (in genere) non si avrà mai bisogno di ricorrere al dizionario.
Approfondita la trattazione di LINQ to XML e LINQ to SQL, e notevole l’utilità offerta dall’ultimo capitolo, riportante l’elenco (con spiegazioni ed esempi) degli operatori di query.
CONTRO
Prezzo piuttosto elevato, considerando le dimensioni e ciò che offre. Impaginazione e formattazione migliorabili, sia del testo che degli esempi di codice (la indentazione, per esempio, va rivista completamente). Questi ultimi inoltre sono carenti sia del database di esempio, che dei file di testo con i dati da sottoporre a query.
Voto: 7.5/10
Lettore: Principiante/Intermedio
Table of Contents
Preface
5 – Cap. 1: Overview
25 – Cap. 2: LINQ to Objects
33 – Cap. 3: LINQ to XML
77 – Cap. 4: LINQ to SQL
141 – Cap. 5: LINQ over Dataset
155 – Cap. 6: LINQ to XSD
171 – Cap. 7: Standard Query Operators
221 – Appendix A: Building an ASP.NET Application
229 – Appendix B: LINQ with Outlook
233 - Index