Questo è uno dei due talk che ho portato a ITDevCon 2017, la conferenza europea dedicata agli sviluppatori Delphi, organizzata da bitTime Professionals e bitTime Software.
Contenuti
Questa presentazione è incentrata sull’applicazione dei principi di Clean Code (ispirati all’omonimo libro di Robert C. Martin) nell’ambiente di sviluppo Delphi.
L’obiettivo principale è sensibilizzare gli sviluppatori sull’importanza della leggibilità e manutenibilità del codice, ricordando che circa l’80% del ciclo di vita del software è dedicato alla manutenzione. Attraverso una “galleria di orrori” ed esempi pratici di “codice cattivo” (antipattern, funzioni chilometriche, cattiva gestione delle eccezioni), l’autore illustra le buone pratiche per migliorare la qualità del software. Vengono analizzati nel dettaglio l’assegnazione di nomi significativi, la scrittura di funzioni brevi e ben focalizzate, la riduzione dell’uso dei commenti superflui, la corretta formattazione e la creazione di confini (wrapper) con il codice di terze parti, con l’obiettivo finale di produrre software più robusto, pulito e facilmente testabile.
Argomenti
- Esempi di “Codice Cattivo” (Bad Code): riconoscimento degli antipattern più comuni in Delphi, come i metodi smisurati, l’effetto “ripetitore di eccezioni”, i commenti ridondanti, le funzioni con troppi parametri e la cattiva denominazione di tipi ed enumeratori.
- Nomi Significativi (Meaningful Names): regole per scegliere nomi espressivi per variabili, classi e metodi (Intention Revealing), evitando abbreviazioni incomprensibili, nomi non pronunciabili, singole lettere o termini generici.
- Progettazione delle Funzioni: principi per scrivere routine brevi con un solo livello di astrazione, focalizzate su una sola responsabilità (“do one thing well”). Viene suggerito di limitare al massimo il numero di parametri (evitando i parametri di tipo flag/booleani) ed eliminare i “side effect” o la logica nascosta.
- Gestione degli Errori e “Case…of”: sostituzione dei complessi blocchi
case...ofe dei codici d’errore mediante il polimorfismo, le interfacce e la gestione dedicata delle eccezioni. Raccomandazione di evitare di restituire o passare valorinilper prevenire errori di Access Violation. - Commenti e Formattazione: l’importanza di usare il codice stesso come prima forma di documentazione, riducendo i commenti (spesso obsoleti o fuorvianti). Cura dell’ordine orizzontale, verticale e dell’indentazione per garantire la professionalità del sorgente (utilizzando anche il Format Code di Delphi).
- Strutture Dati e Confini (Boundaries): distinzione tra classi e DTO (Data Transfer Objects), rispetto della Legge di Demetra e utilizzo di pattern come l’Adapter o le classi wrapper per isolare il proprio codice dalle librerie/framework esterni (RTL, VCL, FMX).
- Testabilità e Principi SOLID: incanalamento verso i principi SOLID e le Unit Testing: scrivere codice pulito porta naturalmente a software disaccoppiato, facile da testare e con basse metriche di “tossicità”.
