Refactoring : sviluppo di codice stabile e di alta qualità


Refactoring code

Refactoring code

Qualsiasi programmatore si pone l’obiettivo di scrivere codice stabile, di alta qualità e leggibile cosi’ da favorire ildebugging e i futuri aggiornamenti

Una delle tecniche più famose è quella del refactoring che mira a migliorare la qualita’ del codice senza aggiungere nuove funzionalita’ al software,è semplicemente un’ottimizzazione.

Nonostante lo scopo del refactoring non sia quello di modificare il comportamento del nostro codice,non va trascurata questa eventualita’ visto che tante modifiche possono portarre a dei bug che per molto tempo possono rimanere silenti prima di accorgersi della loro presenza.

Non esiste un manuale o delle regole precise da eseguire per effettuare refactoring su del codice.L’esperienza o il lavoro quotidiano ti permette di raffinare tali tecniche e tale ottimizzazione, ma ci sono alcuni suggerimenti base da prendere in considerazione:

  • Eliminare codice duplicato,creando una funzione che contenga questo e che venga richiamata all’interno della pagina
  • Ridurre le espressioni logiche complesse con espressioni condizionali o sostituire con funzioni
  • Creare una classe e i relativi metodi devono riferirsi strettamante ad esse,se si accorge che non sono in stretta relazione con essa,si puo’ prendere in considerazione di creare un’ulteriore classe dove inserire questi nuovi metodi
  • Evitare molti livelli di nidificazione delle strutture condizionali (if,else,..),cercando la soluzione migliore tramite switch oppure tramite funzioni

Questi sono solo alcuni spunti per effettuare un buon refactoring,ma come ho detto sopra con l’esperienza e con il lavoro quotidiano si puo’ puntare a migliorare e ascrive codice di qualita’

ESEMPIO DI REFACTORING


define('COSTANTE1',true);
define('COSTANTE1',false);
define('COSTANTE1',false);
define('COSTANTE1',true);

if(COSTANTE1 &&((COSTANTE2 || COSTANTE3) && COSTANTE4))
{
   funzione1();
}
else
{
    funzione2();
}

function funzione1()
{
  ...operazioni da eseguire...
}

function funzione2()
{
  ...operazioni da eseguire...
}


Questo codice di esempio messo in contesto reale funzionerebbe in modo corretto,ma immaginiamo un contesto piu’ ampio dove le nostre COSTANTI servono anche in altri file? Allora un primo intervento potrebbe creare un file config.php dove inseriamo la nostra definzione delle costanti.

Altro intervento potrebbe essere quello di intervenire sull’espressione logica e trasformarla in funzione tipo:



if(funzione_logica())
{
  funzione1();
}
else
{
  funzione2();
}

function funzione_logica()
{
   return (COSTANTE1 &&((COSTANTE2 || COSTANTE3) && COSTANTE4))
}


Ulteriori interventi potrebbero essere quello di togliere le parentesi graffe e scomporre ancora di piu’ la funzione logica. Alla fine di tutto l’intervento di refactoring il codice potrebbe avere un aspetto simile a questo:



require_once ('config.php');//file che contiene la dichiarazione delle costanti

if(funzione_logica())
   funzione1();
else
    funzione2();

function funzione_logica()
{
   return (funzione_logica_prima() && funzione_logica_seconda())
})

function funzione_logica_prima()
{
       return ((COSTANTE1||COSTANTE2));
}

function funzione_logica_seconda()
{
    return ((COSTANTE2 || COSTANTE3) && COSTANTE4));
}


Accedi al Blog di Nakistar per altri informazioni.
Nakistar –> Programmatore Php/Web Developer