Clean Code: Guida – Robert C. Martin (Recensione libro)

Recensione libri

Recensione libro Clean Code di Robert C. Martin

clean code robert martin uncle bobs

Titolo: Clean Code: guida per diventare bravi artigiani nello sviluppo agile di software
Autore: Robert C.Martin

Editore: Apogeo

Anno pubblicazione:  2009 (I Ed.)  – 2018 (Edizione aggiornata)

ISBN: 9780132350884

 

Inauguro la sezione Recensioni con il libro Clean Code guida per diventare bravi artigiani nello sviluppo agile di software pubblicato nel 2009, e nuovamente disponibile dal 2018 per le nuove generazioni, semplicemente perchè a mio avviso è uno di quei libri che ogni sviluppatore che si rispetti dovrebbe spulciare, soprattutto durante i suoi primi progetti, un must-have per dirla in breve.

 

Di cosa parla Clean Code?

Il libro tratta le basi della programmazione ma intese come scrittura di codice chiaro, leggibile e in ottica agile.

L’autore, Uncle Bobs, è piacevolmente affabile, sembra quasi di leggere una raccolta di lettere di un vecchio amico che regala preziosi  consigli; ciò che però colpisce maggiormente è la quantità enorme di codice di esempio che Robert C. Martin ha inserito nelle pagine per comprovare e dare maggiore chiarezza a quanto spiegato a parole, il lettore saprà sicuramente apprezzarlo. Credo tu abbia già capito fin da ora cosa ne penso di questo libro, vero?

 

I contenuti di Clean Code

Veniamo al dunque, Clean Code si compone di 17 capitoli e 2 appendici per un totale di circa 435 pagine.

 

Prima Parte

Il primo capitolo, molto discorsivo, affronta le differenze tra codice “pulito” e codice “cattivo” elencando le scuole di pensiero di illustri personaggi quali Stroustrup, Booch e altri.

Il secondo capitolo ha la parvenza dei dieci comandamenti se non fosse che si parla di nomi significativi da affibbiare a gran parte degli elementi del codice che sviluppiamo e che qui i comandamenti non sono dieci ma sedici; battute a parte, molti sono i consigli riguardo l’uso di nomi parlanti, pronunciabili e ricercabili, ai nomi di metodi e classi, all’evitare le mappe mentali.

Il terzo capitolo è dedicato alle funzioni e come scriverle; molteplici porzioni di codice java riempiono i contenuti di questo capitolo per chiarire i blocchi e le indentazioni; l’autore puntualizza la fondamentale necessità che una funzione venga scritta per svolgere un solo compito e non molteplici, che vengano separati i comandi dalle richieste, che si scelga di restituire una eccezione invece che un anonimo, misterioso e oscuro codice di errore.

 

Seconda Parte

Il quarto e il quinto capitolo sono dedicati ai commenti e alla formattazione del codice: trovo fantastico il fatto che Martin si dichiari ostile ai commenti, perchè il codice va scritto in maniera chiara, inconfutabile e non deve dare adito a interpretazioni. E perchè i commenti rischiano di diventare obsoleti se non vengono riscritti ogni qualvolta si modifica il codice. Il quarto capitolo prosegue elencando (sempre con esempi di codice) le tipologie di commento.

La formattazione del codice sembra un argomento superfluo, quasi da scuola elementare, Uncle Bobs invece ne spiega l’importanza dichiarando che è più rilevante del perfetto funzionamento del codice; formattazione verticale e orizzontale, densità, distanze, ordinamenti e indentazione sono solo alcuni degli argomenti affrontati in questo capitolo e al termine Robert Martin regala le sue regole illustrate in un codice java di esempio.

Bellissimo, seppur breve, il sesto capitolo in cui si parla di oggetti e strutture partendo da una domanda: è giusto mantenere private le variabili? Ovviamente non svelo la risposta, quella te la devi leggere nel libro.

Tuttavia vi è la citazione della Legge di Demetra di cui parlo anche io in questo post oltre a un esempio di relitto ferroviario e a un Data Transfer Object.

 

Acquista Clean Code: guida per diventare bravi artigiani nello sviluppo agile di software

 

Terza Parte

Il settimo e l’ottavo capitolo sono rispettivamente dedicati alla gestione degli errori e alle delimitazioni; non credo che esista ancora qualcuno di noi che non utilizzi il blocco Try..Catch..Finally oppure che abbia il vizio di far restituire un Null alle funzioni, quindi ritengo che l’argomento non sia nulla di non conosciuto almeno ai più.

Diverso discorso invece per le delimitazioni, Robert Martin spiega in poche parole cosa sono i learning test e perchè sono utili quando utilizziamo package (o plugin) di terze parti nel nostro codice e come è utile scrivere una interfaccia quando non sappiamo nulla o poco di una API esterna.

Il nono capitolo è dedicato allo Unit Test, Uncle Bobs sa benissimo quanto sia importante questo argomento e incentra il discorso sul Test-Driven Development che il mondo intero conosce ma lo fa ponendo una questione, ossia che scrivendo codice di test accanto a codice di produzione nel tempo si ottiene una valanga di codice e quindi, come al solito, va scritto in manier leggibile. Il capitolo prosegue con esempi di test puliti e con un estratto del materiale di training di Object Mentor Inc.

 

Quarta Parte

Il decimo capitolo è dedicato alle classi e alla loro organizzazione, quindi all’incapsulamento, al principio SRP e alla coesione. Di quest’ultima se ti interessa puoi leggere di più qui. Questo capitolo comunque credo sia scontato per la maggior parte di noi oramai.

I sistemi e soprattutto la loro complessità, e come farne fronte senza farsi del male, sono argomenti dell’ undicesimo capitolo: si parla di Dependency Injection di Proxy Java, di Framework AOP e del linguaggio AspectJ. Mentre il dodicesimo capitolo è dedicato al Simple Design e alle sue regole, una fra tutte il Refactoring.

La programmazione concorrente, le sue esigenze e le difficoltà sono oggetto del tredicesimo capitolo; un breve elenco di miti e fraintendimenti, consigli sull’utilizzo delle copie di dati, sul limitare il livello di visibilità, sull’indipendenza dei thread sono solo alcuni degli argomenti trattati.

Inoltre sono contenute tabelle riguardo lo studio dei modelli di esecuzione, dei thread produttori, consumatori, lettori e scrittori oltre a decine di consigli e righe di codice java.

Molto interessante il quattordicesimo capitolo in cui, con un caso di studio riguardo un parser di argomenti da riga di comando, Robert Martin parla del raffinamento progressivo; in questo capitolo penso sia concentrato gran parte del codice d’esempio presente in tutto il libro, con l’implementazione della classe Args nella versione bella e brutta copia Martin mostra come raffinare la scrittura di codice, veramente un gran bel capitolo.

 

Quinta Parte

Il quindicesimo, sedicesimo diciassettesimo capitolo sono dedicati rispettivamente a JUnit, al refactoring di SerialDate e alle euristiche; viene esaminato e descritto un frammento di codice di JUnit che aiuta a identificare gli errori di confronto fra stringhe, viene effettuata una revisione della classe SerialDate contenuta nella libreria JCommon per capire come fare refactoring.

Il libro termina con due appendici: la prima fornisce una estensione sul capitolo della concorrenza, la seconda è praticamente il codice di org.jfree.date.SerialDate descritto nel sedicesimo capitolo.

Prima di passare agli aspetti positivi e negativi ti segnalo la recensione di Clean Architecture, sempre di Robert C. Martin e quella di un bel libro sulla progettazione software. Inoltre ti segnalo altre due recensioni: una su una guida ASP.NET Core che ti sarà sicuramente utile e l’altra su un libro di Martin Fowler L’arte del Refactoring; infine se ti interessa la Realtà Aumentata ti invito a leggere questo articolo sulle collisioni e quest’altro articolo sugli spostamenti di oggetti 3D nello spazio. Due tutorial con cui potrai sperimentare alcune tecniche.

 

Aspetti Positivi

Clean Code: guida per diventare bravi artigiani nello sviluppo agile di software è un libro assolutamente da possedere e leggere come manuale di riferimento per costruire una solida carriera come sviluppatore (e architetto) professionista. La quantità enorme di codice java per far comprendere senza inutili giri di parole e teorie quanto descritto nel libro. Grande Uncle Bobs.

Aspetti Negativi

Nessuno.

 

Benissimo, se desideri acquistare il libro Clean Code puoi farlo cliccando sul link o sulla copertina del libro qui sotto. Grazie per il tempo dedicato!

 

Acquista Clean Code: guida per diventare bravi artigiani nello sviluppo agile di software

🔥911 volte è stato letto questo articolo
Se ti è piaciuto questo articolo, lascia le tue stelle!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *