339 4296687 [email protected]

Sei un programmatore emergente e ti stai chiedendo quale sia il miglior modo di programmare la tua applicazione? Lascia allora che ti illustri il Test Driven Development e che ti spieghi cosa lo rende il miglior modo di programmare applicazioni che tu possa decidere di imparare in questo 2019.

Pronto per allargare i tuoi orizzonti e scoprire un metodo Agile, in grado di guidarti passo passo nella stesura di clean code super ottimizzato? Cominciamo subito!

Il dramma continuo degli Spaghetti Code

Che tu sia un programmatore affermato o un emergente, sicuramente ti sarai imbattuto nel problema di dover gestire il cosiddetto “Spaghetti Code“. Mi riferisco a quell’ammasso di codice incomprensibile che ognuno di noi ha scritto almeno una… anzi cento volte nella vita. Ecco, uno dei pregi della programmazione Test Driven è quello di aiutarti a combattere lo spaghetti code, fornendoti un metodo di lavoro ottimizzato, che ti “obbliga” a scrivere codice di alta qualità.

Da cosa scaturisce lo Spaghetti Code

Lo Spaghetti Code è un ammasso di codice sorgente che va fuori controllo per via della sua complessità organizzativa troppo elevata.

Solitamente, ci si trova a confrontarci con questo tipo di codice in due circostanze diverse:

  • Quando siamo alle prime armi e non abbiamo ben chiari i precetti della buona programmazione
  • Ogni volta che non applichiamo un metodo di lavoro efficace o che non effettuiamo uno studio preventivo di ingegneria del software su ciò che stiamo sviluppando.

Come combattere l’insorgenza dello Spaghetti Code con il Test Driven Development

Nel primo caso, non c’è molto che possiamo fare se non concentrarci a migliorare le nostre abilità da programmatori. Quando siamo agli inizi è normale e direi anche produttivo, trovarsi a confronto con del brutto codice. In questo modo, possiamo comprendere di non star lavorando nel modo giusto e possiamo capire in quali aspetti dobbiamo migliorare.

Nel secondo caso, ovvero quando non applichiamo la giusta metodologia di lavoro, quello che dobbiamo fare è domandarci se possiamo cambiare modo di lavorare, adottandone uno nuovo che ci permetta di:

  • Lavorare in modo più ordinato
  • Evitare di incorrere in gerarchie di classi troppo complesse
  • Evitare inutili ridondanze di codice
  • Mantenere un totale controllo sullo stato di avanzamento dei lavori sulla nostra applicazione
  • Mantenere il controllo sull’insorgenza di bug all’interno della nostra applicazione
  • Evitare inutili perdite di tempo dovute al testing manuale dei metodi della nostra applicazione
  • Nel caso di dipendenze da Internet e Database remoti, vogliamo evitare l’attrito che queste dipendenze si “portano dietro”.

Come senza dubbio avrai intuito, il Test Driven Development si pone come obbiettivo quello di venirci in aiuto in ogni punto della lista che ho citato sopra (e molto di più). Ecco il motivo per cui te ne sto parlando in questo articolo.

Test Driven Development (TDD) per aumentare la produttività: ecco le idee di base

Risolvendo i problemi che ti ho illustrato nella lista al paragrafo precedente, il Test Driven Development offre molto al programmatore che decide di adottare questa metodologia di lavoro.

Cerchiamo adesso di dare una spiegazione chiara della metodologia di lavoro, al fine di capirne a pieno il suo funzionamento. Ecco dunque le idee di base su cui si focalizza la metodologia di lavoro del test driven development.

Test First: I Test prima del codice

L’idea di base su cui si fonda la metodologia di lavoro test driven è quella di scrivere i test della nostra applicazione prima di scrivere il suo codice effettivo (da qui il termine Test Driven Development).

Lavorando in questo modo, i test ottengono la funzione di aiutare il programmatore nella definizione delle specifiche del comportamento di ogni singola classe e riga di codice dell’applicazione che stiamo sviluppando.

Il ciclo RGR, Red Green Refactor

Durante la stesura dei test, si segue un metodo operativo ben definito, che è quello dettato dal ciclo Red, Green Refactor. Ecco come funziona:

  1. Si scrive il test per una singola specifica della nostra applicazione.
  2. Si esegue subito il test con il nostro ambiente di testing (JUnit per Java) e si verifica che il test FALLISCA (questo per evitare l’insorgenza di falsi positivi)
  3. Si scrive il solo codice utile a far passare il test
  4. Si esegue il refactoring del codice che abbiamo scritto, sia sulla classe concreta che su quella di test

Nella lista sopra citata, i passi 1 e 2 fanno parte della fase RED, il passo 3 rappresenta la fase GREEN ed il passo 4 rappresenta la fase REFACTOR.

red green refactor nel Test Driven Development
red green refactor nel Test Driven Development

Nello sviluppo di un’applicazione test driven, questo loop è eseguito costantemente ed è il principio base su cui un programmatore Test Driven va a lavorare.

Clean Code? Automatico con il TDD!

Andando a realizzare applicazioni Test Driven, è facile, anzi è quasi automatico scrivere del Clean Code!

Una corretta applicazione del ciclo RGR ti permetterà infatti non soltanto di scrivere dei test di qualità, ma ti porterà inevitabilmente a scrivere anche codice di qualità per il codice le tue applicazioni. Vedrai fin da subito che ti troverai obbligato (in senso buono) a rispettare i principi di buona programmazione e questo avrà un impatto positivo sulla qualità del tuo codice.

Il controllo dei bug? Con i test automatici è semplice da gestire!

Lavorando in un ambiente costantemente testabile, è facile accorgersi se qualcosa non funziona come dovrebbe. Se i tuoi test sono scritti con cura, ti basterà eseguirli per avere una panoramica di tutto il comportamento della tua applicazione.

Da questo, consegue che la paura di toccare del codice funzionante per migliorarlo e farci del refactoring viene meno! Se qualcosa si rompe, ce ne accorgiamo subito eseguendo i test ed è facile tornare indietro all’ultimo punto funzionante, specialmente se si utilizza Git per il versionamento.

Il Test Driven Development permette di risparmiare tempo prezioso

Ad un primo impatto, potrebbe sembrare che spendere del tempo nella stesura di tutti questi test sia un’inutile perdita di tempo.

In realtà, è stato dimostrato che il tempo speso per la stesura dei test è semplicemente tempo investito, che consente di risparmiarne ALMENO il doppio rispetto a quello che spenderemmo per testare il comportamento di un’applicazione non test driven.

Non ti ho convinto? Allora ripensa a tutte quelle volte in cui:

  • Un ciclo non effettua il giusto numero di iterazioni
  • Una classe non si comporta come dovrebbe
  • Una schermata della tua applicazione va in crash
  • Hai dovuto navigare manualmente alla ricerca di una vecchia versione della tua applicazione, cercando fra mille diverse cartelle
  • è comparso un misterioso bug che ti ha portato via tre ore di lavoro prima di essere fixato.
  • Devo davvero continuare?

Credo che la mia lista sia già così abbastanza esaustiva, ma voglio anche farti presente che evitarti tutti quei noiosi aspetti che ti ho citato, ti consentirà anche di avitarne un altro ben peggiore, ovvero la frustrazione!

Scrivere codice non dovrebbe mai portarti a questo stato…

Programmare deve essere un’attività soddisfacente e non frustrante, come troppe volte accade.

Non voglio prometterti che il TDD ti porterà in paradiso, ma sicuramente ti aiuterà moltissimo a semplificarti la vita e a ridurre la quantità di stress scaturita dal tuo lavoro quotidiano.

Ecco un’altra grande ragione per cui dovresti imparare il Test Driven Development oggi stesso!

Gli strumenti utilizzati dal TDD: quali sono e come funzionano

Sono convinto di averti già invogliato a provare la metodologia di lavoro Test Driven ma probabilmente ti stai chiedendo quali sono gli strumenti necessari per lavorare in questo modo. Vediamo insieme di fare chiarezza in merito.

Niente lavoro manuale. Ogni elemento è testato da strumenti appositi!

La prima cosa che voglio dirti è che non ti troverai mai da solo durante l’applicazione della metodologia di lavoro Test Driven.

Uno dei punti chiave di questa metodologia di lavoro sta nel fatto che l’esecuzione dei test della nostra applicazione viene delegato a strumenti appositi, che solitamente si integrano alla perfezione in qualunque IDE tu stia utilizzando e che si occupano si svolgere il loro lavoro in piena autonomia.

Questo ti permette di non doverti concentrare troppo sull’impostazione del tuo ambiente di lavoro. Dovrai solo pensare a impostare gli strumenti la prima volta, poi dovrai solo scrivere il tuo codice e lanciare periodicamente i tuoi test.

Il Test Driven Development trascende dal linguaggio che stai utilizzando!

Non importa che tu stia utilizzando Java, C++ o qualsiasi altro linguaggio di programmazione OOP.

Qualunque sia il tuo linguaggio, troverai un’opportuna suite di strumenti adatti a mettere in pratica il TDD durante lo sviluppo delle tue applicazioni.

Dove e come imparare il Test Driven Development

Ok, ti sei finalmente convinto? Allora lascia che ti dia qualche suggerimento su come puoi imparare il Test Driven Development.

Un ottimo volume da acquistare

Il primo consiglio che voglio darti è quello di acquistare un libro che è stato illuminante per tantissimi programmatori e che è stato recentemente tradotto anche in lingua italiana da Apogeo. Clean Code è un must have che secondo il mio modesto parere, ogni programmatore che si rispetti dovrebbe avere nella propria libreria (digitale o fisica che sia). Si tratta di un manuale completo che guida l’aspirante programmatore in un percorso formativo completo sulla stesura di codice di quelità.

Acquista Clean Code su Amazon

Il mio video corso sul Test Driven Development

Se vuoi puntare su un approccio pratico, ti segnalo anche il mio corso di Test Driven Development con Java, in cui vado ad illustrare tutto quello che devi conoscere per realizzare le tue applicazioni con la metodologia di lavoro Test Driven.

Si tratta di un corso completo, che si focalizza sia sugli strumenti che sulle metodologie di lavoro ed è perfetto per chi si avvicina al mondo del TDD per la prima volta.

Acquistando il corso attraverso il link che trovi qui in basso, posso offrirti uno sconto sul prezzo di listino.

Onestamente, il corso costa poco, puoi portarlo a casa al prezzo di una pizza e vale molto più del prezzo irrisorio che andrai a pagare. Il mio obbiettivo non è quello di farci il guadagno della vita, ma quello di mettere in condizione quanti più programmatori possibile di imparare il TDD in modo completo.

Acquista il mio corso sul Test Driven Development con Java ad un prezzo esclusivo (con formula 30 giorni soddisfatti o rimborsati)!

Share This