Clean Code: codice pulito… e profumato!

Cover

Uno dei temi tra quelli più frequentemente discussi in questo periodo tra gli sviluppatori è quello del Clean Code, che tradotto letteralmente significa appunto codice pulito.

Ma cosa si intende con questo termine? A prima vista è facile pensare che si tratti di una nuova buzz word in voga al momento, ma in realtà la definizione nasconde molto di più.

Che cos’è il Clean Code?

Posso rassicurarvi sul fatto che Clean Code non è un nuovo marchio di fabbrica dietro il quale si nasconde un capitolato di rigide norme sulle quali non si può transigere pena la perdita del “bollino di qualità” o di una qualsivoglia certificazione ISO.

Tutto nasce dal libro di Robert “Uncle Bob” Martins, Clean-Code: A Handbook of Agile Software Craftsmanship, la cui prima pubblicazione risale al 2008. Sebbene il libro sia in circolazione già da qualche anno, sento parlare pochissimo di questa tematica, che invece – a mio avviso – è estremamente importante e rappresenta un must have, o meglio un must know per chiunque voglia definirsi uno sviluppatore professionista.

Il libro contiene consigli e suggerimenti che aiutano lo sviluppatore a scrivere codice pulito, ovvero codice che risulti chiaro e leggibile, e di conseguenza facilmente mantenibile, sia da altri sviluppatori sia dal “se stesso” del futuro, che ne sarà molto grato. Come direbbe Marco Montemagno, «That’s it!». 🙂

Uncle Bob espone in modo chiaro le pratiche da seguire nella scrittura del codice, e anche le trappole da evitare, fornendo anche numerosi esempi di codice a corredo, scritti in linguaggio Java e fondamentali per fissare i concetti. Se utilizzate un linguaggio di programmazione differente, non temete: gli esempi saranno comprensibili comunque senza alcuna difficoltà.

Io la considero una lettura imprescindibile, alla pari del celebre Design Patterns: Elements of Reusable Object-Oriented Software della mitica Gang of Four, e anche un bagaglio culturale indispensabile, come lo sono i principi SOLID o la misurazione e limitazione della complessità intrinseca del codice espressa dalla Cyclomatic Complexity.

I principi in breve

Gli argomenti trattati dal volume sono molteplici e affrontano diversi ambiti della scrittura del codice. Si inizia dalla valutazione del costo intrinseco che le software house sostengono per la manutenzione di codice confusionale, o per riscrivere progetti “nati male” che finiscono inesorabilmente per diventare una nuova Big Ball of Mud.

Clean Code - Meaningful NamesSi prosegue con le regole di buona condotta per scrivere codice che abbia invece un futuro roseo, spaziando dalla scelta di nomi corretti per gli identificatori, che siano intelligibili e ricercabili, alla dimensione e struttura dei metodi, al numero di azioni che compiono, fino al numero ideale di parametri che dovrebbero avere. Si passa poi alla scrittura di commenti che siano efficaci, alla corretta gestione (e generazione) degli errori durante l’esecuzione e così via. Si termina infine con l’approccio giusto per suddividere i contesti applicativi che influiscono direttamente sull’organizzazione dei moduli software.

Mi fermo qui, inutile spendere altre parole: la gamma di problematiche affrontate dal testo sono così estese che qualunque sintesi non le rende giustizia.

Parliamone assieme…

Se siete interessati all’argomento, ne parlerò (in modo approfondito) nel seminario che si terrà a Piacenza il prossimo 6 giugno, in occasione del Delphi Day 2018.

Potete partecipare seguendo il link, anche se utilizzate un linguaggio differente: sebbene gli esempi siano scritti ovviamente in Delphi, i concetti che rappresentano la parte più sostanziosa saranno esposti in modo comprensibile a chiunque.

Mi raccomando quindi… da oggi, fate risplendere il vostro codice rendendolo pulito, e anche profumato! 😜

Cyclomatic Complexity: il colesterolo del codice sorgente

In questo articolo parleremo del colesterolo del codice sorgente, ovvero ciò che viene definito come Cyclomatic Complexity.

Ebbene sì, hai letto bene: anche il codice sorgente potrebbe avere problemi di trigliceridi. 🙂

Se anche tu sviluppi software come me, ti sarà senz’altro capitato di avere a che fare con il cosiddetto Spaghetti Code: è un termine usato per indicare quel tipo di codice che diviene incomprensibile poiché pieno zeppo di condizioni, cicli, salti e rimandi, a tal punto da sembrare una palla appiccicosa di spaghetti stracotti come quelli delle peggiori mense aziendali.

La programmazione a oggetti (OOP) ci viene in aiuto consentendoci di strutturare meglio il codice, magari suddividendolo in layer, ovvero strati impermeabili ciascuno dedicato a una funzionalità specifica. Con diligenza, si creano livelli su livelli, ciascuno con singola responsabilità, fino a quando il numero di strati non diventa tale per cui gli spaghetti si trasformano e assumono la forma di una gigantesca lasagna, ed ecco a voi il Lasagna Code.

Spaghetti CodeSe cerchiamo un compromesso tra i due, possiamo scrivere famiglie di classi finalizzate a un particolare scopo e cercare di farle dialogare tra loro: è il Ravioli Code, ma non è un compito facile stabilire in seguito le relazioni tra queste famiglie. Se poi si adottano anche tecnologie e linguaggi di programmazione diversi, ecco che ci troviamo allora con un Maccaroni Code.

Tutto questo parlare di pasta mi ha fatto venire una gran fame, ma anche sorgere una domanda: non c’è uno strumento rapido ed efficace per poter misurare quanto “fa male” alla nostra salute il codice che siamo scrivendo?

Cyclomatic Complexity

Quando ho letto questo termine la prima volta, ho pensato «che diamine è questa roba?». Se vi capiterà di leggere qualcosa sul Clean Code oppure sui principi SOLID, troverete un sacco di termini simpaticamente complicati che, in realtà, nella maggior parte dei casi si riferiscono a concetti semplici e alla portata di chiunque. La Complessità Ciclomatica non fa eccezione, sebbene sembri il titolo di una puntata di The Big Bang Theory.

Ma quindi di cosa si tratta? Niente paura, non ci metteremo di sicuro a enunciare e analizzare formule complesse, anche perché ai tempi delle superiori io avevo 4 in matematica: immaginatela come un indice, un punteggio che viene dato al vostro codice, e tante più sono le strade che il vostro codice può percorrere durante l’esecuzione, maggiore è il valore attribuito a questo indice.

Ad esempio, se abbiamo un codice fatto solamente di istruzioni di assegnazione, o semplici chiamate ad altri metodi (o procedure, o funzioni che siano), il valore sarà quello più basso, ovvero 1 (uno). Se introduciamo una istruzione if, ecco che stiamo creando un “bivio”, ovvero due strade distinte che si possono intraprendere potenzialmente, e il valore aumenta quindi di due punti passando a un totale di tre. E se introduciamo uno switch? Ecco che l’indice della complessità incrementerà di una unità per ogni alternativa che introdurremo all’interno del costrutto. Lo stesso vale per cicli for. In conclusione, più sono i cammini indipendenti che il nostro software potrà percorrere, maggiore sarà il valore della complessità ciclomatica.

Possiamo quindi dire che la Cyclomatic Complexity è un po’ come il colesterolo nel codice: non si può azzerare, ma più il valore è basso meglio è, e bisogna sforzarsi di mantenerlo tale.

Quali sono i rischi?

In genere, i metodi con indice di complessità elevato tendono a essere eccessivamente lunghi, con molteplici righe che potrebbero essere isolate in metodi distinti, poi hanno una incidenza negativa sulla leggibilità e numerose variabili che sottraggono tante scelte dalla rosa dei nomi intelligibili da utilizzare. Insomma, se il software non può rischiare l’infarto, lo sviluppatore che dovrà manutenere quel codice sì.

Per coloro poi che praticano il salutare sport dello Unit Testing, la faccenda si complica: più sono le vie percorribili dal software, maggiore è la quantità di test da scrivere per coprirle tutte in modo da verificare tutte le possibili condizioni.

Misurare la complessità

Il primo passo per ridurre la complessità del codice è dotarsi degli strumenti appropriati per poterla “diagnosticare”. Non serve lo stetoscopio, né gli esami del sangue, ma è sufficiente controllare che l’ambiente di sviluppo in uso possa misurare la cyclomatic complexity del codice. Vediamone alcuni come esempio.

Cyclomatic Complexity in DelphiRAD Studio, l’IDE prodotto da Embarcadero per lo sviluppo con Delphi e C++Builder, include strumenti per l’analisi del codice e la visualizzazione di diversi parametri, incluso un coefficiente di tossicità dei metodi. Una volta aperto il progetto su cui lavorare, basta selezionare il menu [Project|Method Toxicity Metrics] per richiamare una finestra che mostra istantaneamente gli indici calcolati in base alle metriche disponibili.

Cyclomatic Complexity in Visual StudioPer gli sviluppatori .NET che utilizzano Visual Studio con i linguaggi C# o Visual Basic.NET, suggerisco una estensione di terze parti – CodeMaid – che offre diverse funzionalità interessanti (tutte descritte nel sito ufficiale), inclusa una finestra denominata Spade che mostra i tipi definiti nel file sorgente aperto nell’editor, la loro struttura (campi, metodi, proprietà, ecc.) indicando per ciascun metodo l’indice della Cyclomatic Complexity aggiornato a ogni salvataggio. In alternativa, se siete felici possessori di ReSharper, un tool che non dovrebbe assolutamente mancare in qualsiasi installazione di Visual Studio, potete scaricare una estensione gratuita che calcola la complessità dei metodi e visualizza un warning quando questa supera le soglie di tolleranza prestabilite.

Qualunque sia il tool di sviluppo che state utilizzando, verificate quanto prima l’esistenza di un prodotto o di una estensione (gratuita o a pagamento che sia) in grado di fornirvi questa misura, ancora meglio se in tempo reale e con la possibilità di tenere d’occhio costantemente i valori.

Come “curare” il codice?

Quando il dottore ci diagnostica una complessità elevata nel codice, come possiamo intervenire per ridurla?

Lo slogan sarà pure molto inflazionato, ma anche in questo caso prevenire è meglio che curare: quando si scrive il codice, è necessario monitorare l’indice di complessità e accertarsi che non oltrepassi il limite della dignità. Se ci si accorge che il valore inizia a diventare troppo alto, questo è un chiaro segnale che il codice implementato sta divenendo troppo complesso e intricato ed è necessario quindi eseguire un refactoring per ottimizzarlo o suddividerlo in metodi più piccoli, molto più gestibili e ricollocabili anche in altre strutture, se necessario. Molti tool di refactoring incluso il già citato ReSharper sono dotati di una funzione “Extract Method” per isolare un pezzo di codice all’interno di un metodo lasciando al suo posto la chiamata a quest’ultimo.

E ancora, quando la presenza di uno switch (o di un case del Pascal) fa esplodere il valore dell’indice, è necessario sostituire il costrutto con una implementazione che potrebbe apparire più complessa da realizzare, ad esempio creando un dizionario di associazione tra i valori dello switch e l’implementazione da eseguire, usando funzioni lambda o delegati, oppure sfruttando la programmazione a oggetti e in modo particolare il polimorfismo per delegare a ciascuna sottoclasse derivata la specifica implementazione dei singoli rami logici dello switch.

Conclusioni

Una delle domande che mi viene rivolta più frequentemente è questa: «Come faccio a scrivere codice manutenibile e soprattutto testabile. Ecco, non esiste specificatamente una qualità che attribuisce in automatico, a qualsiasi porzione di codice, la caratteristica di “testabilità” a prescindere: occorre impegnarsi ed esercitarsi nel tenere innanzitutto sotto controllo le metriche di tossicità del codice e applicare le metodologie adeguate, primi fra tutti i principi SOLID, per ridurla drasticamente equilibrando i fattori di modularità e separazione degli ambiti tra i vari moduli software, e a quel punto il codice apparirà manutenibile e testabile come per magia. 🧙

Sebbene esistano tantissimi prodotti, anche complessi e costosi, in grado di compiere analisi molto approfondite del codice, generando indici e report dettagliati rivolti ai soli esperti, l’obiettivo di questo articolo è quello di sottolineare che esistono anche strumenti e tecniche semplici da usare, globalmente diffusi e immediati nella comprensione che permettono allo sviluppatore di tenere sotto controllo la complessità del codice scritto con poco sforzo, indipendentemente dal proprio livello di esperienza.

E voi, quali sono le strategie e gli accessori che utilizzate per mantenere sano il vostro codice? 😉

Seminare codici: laboratorio Arduino per orti

Cover

OUI (Orti Urbani Intelligenti), un laboratorio che avvicina le realtà agricole urbane alle community digitali, assieme a Contamina, un progetto che propone iniziative pratiche per concretizzare idee volte a soddisfare le esigenze di aziende, PA e scuole, hanno organizzato l’evento “Seminare Codici – Laboratorio Arduino per Orti”: una mattinata di esercitazioni pratiche con Arduino, alla luce del sole e nel bel mezzo del Mercato nell’Orto di Reggio Emilia.

Già da qualche tempo desideravo partecipare a un workshop per muovere i primi passi, o meglio i secondi, nella realizzazione di progetti con la scheda elettronica a microcontrollore più celebre del mondo: Arduino.

Lo scorso weekend si è presentata una ottima occasione, curiosamente all’interno di un orto gigante. 🙂

Il laboratorio Arduino

I ragazzi del Google Developer Group locale assieme ai professori Fabrizio Silvetti (IIS Cattaneo-Dall’Aglio) e Nicola Carpanoni (ITS Blaise Pascal, la scuola superiore che ho frequentato più di 20 anni fa… sob!), con l’aiuto di alcuni studenti volenterosi, hanno affiancato un’orda di partecipanti curiosi di vedere come è possibile utilizzare Arduino per coltivare il proprio orticello… letteralmente. 😄

Dopo le presentazioni di rito, ha avuto inizio l’esercitazione pratica vera e propria. Obiettivo proposto: misurare la percentuale di umidità presente in un campione di terriccio, prelevato direttamente dall’orto a fianco.

Per iniziare…

Per la costruzione del prototipo è stato utilizzando un Arduino MKR1000, un modello progettato appositamente per soluzioni IoT, di dimensioni ridotte e con il supporto della connessione Wi-Fi.Arduino MKR1000

Tramite l’uso di una breadboard, la scheda è stata collegata a un sensore che misura la conduttività elettrica del materiale che consente il passaggio di corrente tra due poli che lo formano. Abbiamo quindi sfruttato questo principio di funzionamento piegandolo alle nostre esigenze, allo scopo di ottenere il dato che ci serviva: immergendo il sensore nel terriccio, maggiore è l’umidità e migliore è la conduzione elettrica tra i due poli, poiché l’elettricità viene trasportata dai sali minerali dell’acqua presente nel campione di terra; se invece il terriccio è arido, la conduttività sarà ovviamente inferiore. Partendo da questo principio, abbiamo la possibilità di attribuire un significato all’informazione analogica che proviene dal sensore e viene comunicato alla scheda Arduino. Scrivendo un semplice programma, è possibile “catturare” il valore del sensore e mostrarlo sul PC all’interno della console di monitoraggio.

Completare il prototipo

Si era detto però che l’obiettivo era mostrare una percentuale, poiché i valori acquisiti direttamente dal sensore e mostrati non sono immediatamente intelligibili. Quindi, come trasformare il dato acquisito dalla scheda? Servirebbero due valori acquisiti dal sensore, uno che rappresenti il massimo e un altro il minimo, che possano rappresentare il livello più alto di umidità (100%) e quello più basso (0%). Abbiamo quindi immaginato un bicchiere d’acqua come la condizione di maggiore umidità che avremmo mai potuto riscontrare nel terriccio: basta immergere il sensore nel bicchiere e annotare il valore letto come massimo; lasciando invece il sensore sospeso nell’aria, ecco che possiamo leggere e annotare un dato che sia valido come minimo. A questo punto, è bastato applicare una proporzione per poter visualizzare un dato comprensibile della quantità di umidità presente nel nostro prezioso campione di terra.

IoTGiunti a questo punto, è facile immaginare quante infinite estensioni si potrebbero applicare alla nostra soluzione: collegare un display per visualizzare il valore, installare un led rosso da accendere per segnalare una umidità sotto la soglia ideale, interfacciarsi tramite WiFi e quindi a Internet per comunicare l’umidità in tempo reale, ad esempio inviando messaggi istantanei con Telegram, oppure ancora attivare l’impianto di irrigazione per “dissetare” un po’ il terreno, e chi più ne ha più ne metta. E stiamo parlando della gestione di una sola grandezza, di un solo aspetto specifico del nostro ipotetico orto.

Conclusioni

In conclusione, l’iniziativa è stata senz’altro divertente oltreché istruttiva: mi ha consentito di capire meglio e più da vicino le capacità e le possibilità di quel meraviglioso dispositivo che è Arduino, di cui avevo solo poco più di una infarinatura molto superficiale, soprattutto dal punto di vista dell’hardware, poiché generalmente la programmazione non è un problema per me che la affronto anche a occhi chiusi. Come si dice in questi casi, “meglio tardi che mai”. 😉

In questi giorni sto attendendo l’arrivo del kit Arduino che non ho potuto fare a meno di ordinare: sull’onda dell’entusiamo tipica dei bambini troppo cresciuti, è possibile che seguano altri post sull’argomento. 😄

VisuinoUna delle prime cose che senz’altro sperimenterò per la programmazione è Visuino: un ambiente di sviluppo visuale per Arduino creato con Delphi dall’ottimo Boian Mitov.

A presto! 🤗

Delphi Day 2017 Padova Edition: il reportage

Articolo - Delphi Day 2017 Padova Edition in Tweet

Ho partecipato ieri al Delphi Day 2017 Padova Edition, la conferenza che si affianca a quella tradizionale e più conosciuta che si tiene ogni anno a Piacenza nel mese di giugno. Essa di fatto sostituisce l’iniziativa precedentemente conosciuta con il nome “Delphi Porte Aperte”.

L’iniziativa si è svolta all’Hotel Sheraton di Padova e ha riscosso un discreto successo, con un centinaio di sviluppatori Delphi presenti: un segnale che la community Delphi continua a essere particolarmente viva e “pulsante”.

La giornata era suddivisa in due parti: il mattino con seminari tecnici, il pomeriggio con la conferenza vera e propria, gratuita e aperta a tutti.

Seminari

Riguardo i seminari, non avendo il dono dell’ubiquità e potendo partecipare solamente a uno di questi (e la scelta era senz’altro ardua), ho deciso di unirmi al pubblico di Maurizio Del Magno sullo sviluppo di applicazioni con il paradigma MVVM, nello specifico con l’uso della libreria iORM sviluppata dallo stesso Maurizio.

Già in altre occasioni avevo avuto modo di approfondire MVVM e di vedere in azione iORM, ma finalmente ieri – grazie all’approfondimento di 3 ore – sono riuscito a “carpire” un quadro più completo dell’utilizzo generale della libreria in un contesto reale e pratico.

Sicuramente approfondirò meglio l’argomento nei prossimi giorni, magari facendo qualche post sul blog in merito alle esperienze e alle soluzioni realizzate, se possono essere utili ad altri.

Delphi Day 2017 Padova Edition:
la conferenza

Nel pomeriggio si è tenuta la conferenza vera e propria, seguendo la formula ormai collaudata del “Delphi Day classico”, partendo quindi con Paolo Rossi e un’analisi dello stato di Delphi sino a oggi, e delle novità che ci attendono nell’immediato futuro.

Tra le cose importanti da segnalare c’è l’inversione di tendenza già registrata da qualche anno in merito all’uso di Delphi, con un aumento delle licenze vendute e una impennata del numero di librerie e componenti molti dei quali free e open source, frutto diretto degli “improvement” apportati al linguaggio (es. Generics e Anonymous Methods) grazie agli investimenti che Embarcadero ha fatto in termini di R&D, raccogliendo di fatto un prodotto in affanno (per motivi anche non tecnici) e aggiungendo feature, piattaforme e compilatori.

Molto interessante è stata la sessione di Stefano Maestri di RedHat, con una dimostrazione pratica del funzionamento della cosiddetta blockchain, lo strumento che è alla base dei Bitcoin e delle altre criptovalute, che potrebbe rivoluzionare nei prossimi anni il modo in cui viene concepito l’uso della Rete e il concetto di “scambio” (visto come compenso per l’erogazione di un servizio) all’interno della stessa.

La giornata è proseguita con un case study di applicazione industriale tridimensionale in Delphi, per dare un’idea di quali sono le possibilità e i risultati raggiungibili con l’uso di librerie 3D di terze parti, in larga parte scritte in C++ (per massimizzare da subito le performance) ma interfacciabili con Delphi grazie ai “binding” forniti dagli sviluppatori. L’attenzione è stata rivolta in particolare alla libreria Afterwarp e incentrata sullo sviluppo di applicazioni business (non solo giochi), unendo di fatto le prestazioni elevate del codice scritto in C++ con il livello più alto e l’eleganza del linguaggio Delphi Pascal.

L’attenzione si è spostata poi sulla recente introduzione del supporto alla piattaforma Linux, caratteristica principale di Delphi 10.2 Tokyo, e sulle motivazioni più che valide per sfruttare questa occasione per sviluppare applicazioni server-side (no GUI, per il momento) con Delphi: il risparmio dei costi di licenza, la manutenzione più semplice dei sistemi Linux-based (SSH vs RDP, apt-get vs installer, …), il supporto esteso per il Cloud e soprattutto Docker, la disponibilità di appliance già disponibili con distro e applicativi, la facoltà di costruire soluzioni con l’embedding di macchine Linux all’interno di box, preinstallati assieme alla vostra applicazione. Inoltre, il codice Delphi esistente (salvo chiamate esplicite alle API native) può essere portato facilmente sulla piattaforma Linux con un numero estremamente ridotto di modifiche.

Infine, Luca Minuti ha curato una breve panoramica dello sviluppo di applicazioni Web RIA con ExtJS, un framework JavaScript ricco di widget già pronti e funzionali, prodotto da Sencha, recentemente acquisita da Idera (la società che controlla attualmente Embarcadero). Grazie a questa acquisizione, è ipotizzabile attendersi in futuro delle novità riguardo l’integrazione tra Delphi ed ExtJS, che vanta una certa maturità con più versioni rilasciate nel corso degli anni, nonché una discreta base di utenti.

Approfitto di questo post per ringraziare Wintech Italia per la sempre ottima organizzazione dell’evento, e anche tutti i colleghi partecipanti con cui ho potuto ancora una volta conversare (e scherzare) scambiando ottimi pareri tecnici e utili opinioni.

La giornata in tweet

Concluso il post con una “storia” che riepiloga i tweet scritti durante la giornata, con qualche foto e dettaglio della conferenza.

Continue Reading

ITDevCon 2017: slide e sorgenti su Clean Code e Information Radiator con Delphi

Badge di ITDevConSi è conclusa da qualche giorno l’appuntamento annuale imperdibile per gli sviluppatori Delphi, ITDevCon 2017 – European Delphi Conference, la conferenza europea dedicata agli sviluppatori Delphi.

L’evento si è tenuto anche quest’anno nella sede di bitTime Software a Roma, tra le verdi colline che adornano la città di Frascati, con un tempo metereologico da fare invidia all’estate.

Dopo la parentesi primaverile della Spring Edition è tornata quindi la “sorella maggiore” della conferenza, con due giornate piene di interessanti speech, sia in italiano ma anche in inglese, per non far mancare nulla agli ospiti venuti da fuori Italia, che sono certo avranno gradito parecchio anche le prelibatezze servite nei coffee break e nel pranzo durante il giorno, raggiungendo il top con i piatti della tradizione locale serviti all’agriturismo per cena, inclusi i tipici Saltimbocca alla Romana (che Fabrizio Bitti, CEO di bitTime, ha prontamente tradotto per i non italiani in «Jump in Mouth at the Roman Way»). 😄

Anche questa edizione ha mantenuto lo spirito che la contraddistingue: contenuti tecnici di elevata qualità, a giudicare dai feedback positivi lasciati dai presenti al termine di ogni singolo speech, con una buona dose di humour che non guasta mai.

La caratteristica più apprezzabile di ITDevCon, a mio avviso (e dopo anni di partecipazione come speaker e come attendant posso dirlo) è che non ti lascia mai tornare a casa senza una buona dose di spunti e ispirazioni da cui trarre nuove idee e tecniche per il nostro lavoro. Questo è dovuto al fatto che tutti gli speaker cercano sempre di trasmettere le proprie esperienze, e non solo di raccontarle asetticamente, una tendenza che non sempre si trova negli eventi di questo tipo, a cui si aggiunge l’accoglienza esclusiva dei padroni di casa.

Slide e codice sorgente

Quest’anno ho partecipato come speaker (ormai è una tradizione) proponendo due talk.

Nel primo talk, intitolato ironicamente «Non Aprite Quella Unit!», ho presentato esempi di “codice orrorifico” tratti dalla mia esperienza di “code revision” presso clienti, sia per farsi quattro risate, sia per introdurre l’argomento principale della sessione, ossia la scrittura di “codice pulito” (Clean Code) e i benefici che porta nel team di sviluppo, in termini di chiarezza e manutenibilità del codice, partendo dalle regole più banali e intuibili fino ad arrivare agli accorgimenti più sconosciuti e difficili da attuare.

Nel secondo talk, intitolato «Crea un Information Radiator con Delphi», ho spiegato innanzitutto cosa si intende con questo strano termine: si tratta di un pannello che distribuisce informazioni alle persone nelle vicinanze, collocato e dimensionato affinché sia visibile con facilità. Ne avrete sicuramente visti in aeroporto, per mostrare le informazioni sul volo in partenza, oppure negli autogrill, per diffondere informazioni sul traffico e le ultime notizie. Si tratta di una nuova tendenza, che sta dilagando al punto tale che pure i team di sviluppo li stanno adottando per tenere sotto controllo l’andamento delle attività sui progetti aperti e gestiti con metodologie agili (es. Scrum). Per realizzare il nostro pannello, abbiamo scelto Raspberry Pi 3 come hardware e Delphi (con FireMonkey) per creare un’applicazione Android nativa e ultraveloce (rispetto alle soluzioni più comuni basate su pagine Web a rotazione e browser pesanti).

Potete scaricare i sorgenti dal mio repository su GitHub, assieme alle slide pubblicate nel mio profilo su SlideShare a questi indirizzi:

Conclusioni

In breve, se non avete mai partecipato o se mancate da qualche anno, non mi farei sfuggire la prossima edizione, magari la Spring se ci sarà. 😉

ITDevCon SE 2017: Web API e applicazioni Web con Vue.js e Delphi

Logo ITDevCon 2017 Spring EditionQuesto mese di maggio si conclude con un appuntamento inedito: ITDevCon 2017 Spring Edition.

A furor di popolo, come si suol dire, la conferenza europea dedicata a Delphi ITDevCon torna il prossimo venerdì 26 maggio a Roma per una edizione speciale primaverile, in forma ridotta (solo una giornata prima del weekend) e in lingua italiana, ma come sempre molto ricca di argomenti interessanti per gli sviluppatori Delphi.

Affrettatevi ad acquistare i biglietti per partecipare alla conferenza, perché stanno per terminare sia i biglietti che i giorni a disposizione. 🙂

L’agenda completa dell’evento la trovate sul sito ufficiale. Fra i tanti speaker presenti ci sarò anche io con due talk orientati all’integrazione di Delphi con il Web.

REST API e Vue.js

Come usare REST API fantastiche e dove trovarle

Nel mondo là fuori c’è un intero universo di Web API interessanti e curiose, tutte da esplorare. Dopo una breve introduzione, utile a fissare bene determinati concetti di base, in questo talk vedremo come è possibile “consumare” queste API con Delphi, costruendo applicazioni client anche molto accattivanti e di sicuro impatto.

Applicazioni Web ultra-performanti con Vue.js e Delphi

Vue.js è una libreria JavaScript per creare interfacce utente estremamente performanti, che può essere introdotta gradualmente nelle vostre applicazioni Web, nel modo meno invasivo possibile. In questo talk vedremo come utilizzare la libreria per costruire passo passo un frontend fino alla sua integrazione con un backend realizzato in Delphi.

Slide e codice speech ITDevCon 2016 su Delphi con React e Telegram

Articolo - ITDevCon 2016 - Slide e codice sorgente

Ho reso pubblici slide e codice sorgente degli esempi relativi ai talk tenuti alla conferenza ITDevCon 2016 – European Delphi Conference.

Codice sorgente

Il codice sorgente può essere scaricato dalla mia pagina su GitHub, che contiene anche il materiale utilizzato nelle conferenze passate. I sorgenti degli esempi di ITDevCon 2016 li trovate precisamente in questa cartella, che include anche i documenti PDF con le slide.

Per scaricare gli esempi, potete clonare il repository usando il vostro client Git preferito, oppure scaricare lo ZIP del repository con tutti i sorgenti.

Slide

Le slide mostrate durante l’evento le trovate sulla mia pagina SlideShare.

Potete visualizzarle direttamente online e scaricarle a questi link:

ITDevCon 2016: riepilogo e qualche foto

Articolo - ITDevCon 2016 - Recap

Sono tornato già da qualche giorno dalla “gitarella” a Roma per ITDevCon 2016 (sito ufficiale), la conferenza europea dedicata a Delphi. Ecco qui una breve recensione dell’evento.

Dopo le esperienze di Verona e Milano, quest’anno l’evento si è svolto per la prima volta a Roma, nel quartier generale di bitTime Professionals, gli organizzatori dell’evento: oltre al beneficio del valore tecnico, la conferenza è sempre un’ottima occasione per spostarsi e vedere posti nuovi.

Questa edizione ha visto la partecipazione di una sessantina di persone, un vero “sold out” con la room principale piena: unito al dato di partecipazione del Delphi Day dello scorso giugno, il risultato conferma il desiderio di fare community da parte degli sviluppatori, che è uno degli aspetti di maggiore risalto in questo tipo di eventi, nonché il vivo interesse verso Delphi e le novità che riguardano il prodotto.

Dal punto di vista dei contenuti, non sono mancati gli approfondimenti relativi alle tecnologie assodate ma anche a quelle emergenti.

Si è parlato di sviluppo di applicazioni Web e SPA (Single Page Application), usando le librerie Angular2 e React lato client, ovviamente con backend in Delphi, approfondendo ben due librerie free e Open Source, DelphiMVCFramework e MARS Curiosity, che si affiancano a quelle già disponibili “out of the box” in Delphi.

Non sono mancate le sessioni maggiormente orientate agli “smanettoni”, con un approfondimento di tecniche avanzate per il debugging delle applicazioni e gli “internals” del memory manager FastMM4.

La tematica dell’accesso ai dati non è stato senz’altro trascurata: si è parlato del movimento NoSQL e delle caratteristiche di uno dei database NoSQL più diffusi, MongoDB, per il quale la libreria FireDAC offre un driver già da qualche versione. A questi argomenti si è aggiunto un approfondimento di Firebird 3.0 e delle novità portate dalla nuova versione, assieme a una sessione di tips per incrementarne le performance.

Screenshot Io ho tenuto uno speech su un argomento particolarmente in voga al momento, ovvero i Bot e il loro possibile impiego nelle proprie soluzioni business, spiegando come realizzarne uno sfruttando la piattaforma messa a disposizione da Telegram, realizzando a titolo di esempio un bot ad hoc per la conferenza, in grado di fornire informazioni sempre aggiornate sulle sessioni e sugli speaker, oltre ad avvisi organizzativi (con una punta di “british humour”).

Ho trovato particolarmente interessanti le sessioni su Arduino e sugli spunti di integrazione con Delphi: basta davvero solo la fantasia per immaginare uno scenario di possibile utilizzo della scheda assieme ai tanti moduli ordinabili in rete per costruire qualcosa di concreto da cui potrebbe scaturire un’interessante idea.

Infine, sono stati molti i tool e le librerie analizzate nel corso dei vari talk, tutti in buona prevalenza gratuiti e open source, in grado di ricoprire la totalità delle problematiche di sviluppo di qualsivoglia tipo di applicazione Delphi.

Il tutto contornato da un’ottima cena e da abbondanti buffet pomeridiani che hanno reso ancora più gustosi i coffee-break di condivisione e chiacchiere con gli altri partecipanti.

Promossa quindi a pieni voti anche questa edizione romana di ITDevCon, per la generosa ospitalità e l’ottima organizzazione, per la quantità e qualità dei contenuti tecnici proposti, per la ricca premiazione e per la simpatia dei partecipanti e dello staff che ci ha gentilmente ospitati.

Arrivederci quindi a presto, si spera, a una nuova edizione di ITDevCon!

Vi pubblico qui di seguito qualche foto e i tweet in diretta.

Continue Reading

Delphi Cookbook Second Edition: la mia recensione

Riporto qui la mia recensione del libro Delphi Cookbook Second Edition di Daniele Teti, che riprende e integra quella rilasciata in lingua inglese su Amazon.

Copertina di Delphi Cookbook Second Edition

Copertina del libro

«Delphi Cookbook Second Edition» è un ottimo libro estremamente utile.

Devo premettere che io sono un fan dei cosiddetti “libri accademici”, quei lunghi tomi che ti introducono a un linguaggio di programmazione o a una tecnologia e ti dicono tutto quello che c’è da sapere su di esso, partendo dai concetti basilari e andando in profondità sviscerando ogni dettaglio e fornendo una conoscenza completa a 360 gradi. Delphi Cookbook Second Edition non appartiene a questa categoria di libri, ma questo non deve essere considerato un aspetto negativo: occorre tenere conto che al giorno d’oggi il tempo è una cosa preziosa, e il software – in particolare se si tratta di uno strumento di sviluppo – si evolve molto velocemente, e leggere dei “volumi senza fine” richiede parecchio impegno quando noi programmatori dobbiamo invece iniziare a lavorare al nostro progetto nel più breve tempo possibile, altrimenti partiremmo già in ritardo.

Da questo punto di vista, Delphi Cookbook Second Edition si presenta in un forma molto comoda da usare: quando si incontra un problema specifico nel processo di creazione dell’applicazione, è possibile partire dall’indice del libro e cercare il capitolo relativo, ottenendo quei bit di informazioni essenziali che permettono di sbloccare la situazione e proseguire nel completamento del task. In fondo, un “tip” è spesso tutto ciò che serve a uno sviluppatore.

Ma non vorrei essere frainteso: non stiamo parlando di una raccolta di quei vecchi e banali trucchetti di cui tutta la community Delphi ormai è già a conoscenza: il libro affronta casi d’uso aggiornati e al passo con i tempi, spiegando per ogni “ricetta” (una sorta di design pattern) come procedere e soprattutto il perché della soluzione proposta, in modo da consentire al lettore di cogliere la logica che vi sta dietro, consentendogli di riapplicarla anche in altri contesti differenti da quello affrontato.

All’interno del libro scoprirete inoltre che molte delle soluzioni proposte sfruttano le caratteristiche del linguaggio Object Pascal e si basano su classi e componenti che sono già presenti in Delphi: questo dimostra come il linguaggio e il tool siano uno strumento del tutto moderno e adatto alle esigenze di sviluppo odierne. Vi sono però anche ricette basate su componenti di terze parti e open source, come Delphi MVC Framework, con una spiegazione completa del loro utilizzo, dall’installazione al deploy, fornendo così anche dei tutorial aggiuntivi rispetto a quelli che si trovano nella documentazione ufficiale di questi interessanti progetti.

Le tecniche mostrate spaziano dall’interfaccia utente (come il supporto ai temi e l’owner-drawing) alla logica di business (come l’uso della Extended RTTI per la meta-programmazione), passando per l’esposizione dei dati tramite server Web HTTP al consumo di servizi REST, coprendo in breve tutti gli aspetti salienti della costruzione di una soluzione software completa, sia per desktop sia per piattaforme mobile.

Concludendo, se sei uno sviluppatore Delphi e vuoi utilizzare questo tool di sviluppo come merita, devi per forza leggere questo libro. 🙂

Acquista su Amazon

Delphi Boot Camp: scarica e impara Delphi gratis!

Sei uno sviluppatore software che ama conoscere ogni giorno nuove tecnologie, strumenti e linguaggi di programmazione? Questa è senz’altro una occasione che non puoi assolutamente lasciarti sfuggire: il Delphi Boot Camp!

Delphi Boot Camp - dal 5 al 9 settembre

Cos’è il Delphi Boot Camp?

Il Delphi Boot Camp prevede 5 giornate di training online gratuito, dal 5 al 9 settembre (2 ore al giorno), con cui potrai scoprire la magia della programmazione con Delphi, le funzionalità di sviluppo rapido delle applicazioni (RAD) offerto dall’ambiente, l’uso del moderno ed elegante linguaggio Object Pascal, le potenzialità del framework crossplatform FireMonkey.

Per il tuo “training”, puoi scegliere se iniziare a usare gratuitamente il prodotto completo scaricando la versione di prova, oppure approfittare di una eccezionale promozione limitata: ottenere una licenza gratuita di Delphi Starter Edition (del valore di € 395,28) e scaricare anche una copia di Object Pascal Handbook, il libro di Marco Cantù sul linguaggio Object Pascal (aggiornato con le novità di Delphi 10.1 Berlin) con il quale potrai seguire meglio il corso.

Il training si rivolge sia a coloro che hanno sentito parlare di Delphi e aspettavano un’occasione buona per provarlo sia a chi non lo conosce assolutamente oppure a chi lo ha già usato in passato e vuole vedere quali sono state le migliorie apportate all’ambiente e al linguaggio di programmazione, tenendo presente che con la prossima versione in arrivo (nome in codice Godzilla) un nuovo compilatore per Linux affiancherà quelli già esistenti per Windows e Mac (32 e 64 bit), per Android e Apple iOS, come indicato nella nuova roadmap aggiornata ad agosto 2016.

Agenda delle giornate

Qui di seguito riporto gli argomenti di ciascuna giornata del training. Le sessioni sono in lingua inglese.

  • Giorno 1 – Introduzione a Delphi: l’IDE e la tua prima applicazione
  • Giorno 2 – Conoscere il linguaggio Delphi
  • Giorno 3 – Costruire interfacce utente efficaci con FireMonkey
  • Giorno 4 – Game Development con Delphi
  • Giorno 5 – Sviluppo Mobile e Database

Per approfondire il contenuto delle lezioni e i dettagli dell’iniziativa, guarda il filmato di introduzione di Jim McKeeth, Evangelist di Embarcadero Technologies.

Ora che conosci tutti i dettagli, non ti resta che iscriverti subito all’evento.

Iscriviti subito

Buon addestramento! 😉

Copyright © 2018. Powered by WordPress & Romangie Theme.