PHP Refactoring – Lez. 4: Estrazione di codice e eliminazione di variabili temporanee
Spesso nei metodi di una classe troviamo del codice che può essere riutilizzato in vari punti della stessa, oppure notiamo che messe in quella posizione non danno alcun significato intuitivo.
Un miglioramento della leggibilità dell’oggetto è estrarre questo gruppo di righe con un significato comune e metterle in un metodo che sarà richiamato ogni volta che si presenterà la necessità.
Un altro problema è la presenza di variabili temporanee, che non fanno altro che aumentare i rischi di bug e possono essere sostituite da codice autoesplicativo, nella forma di un metodo privato della classe.
Di seguito è fornito un esempio per meglio chiarire il concetto:
| Errato |
|
class Conto { public function liquidita() { $interessi = 0,025; ………………………………. $totaleCredito = $this->db->getRow(1); $creditoDisponibile = $interessi * $totaleCredito; return $creditoDisponibile; } } |
| Esatto |
|
class Conto { private $interessi; public function __construct($interessi) { $this->setInteressi($interessi); } public function setInteressi($interessi) { $this->interessi = $interessi; } public function getInteressi() { return $this->interessi; } public function liquidita() { return $this->totaleCredito() * $this->getInteressi(); } private function totaleCredito() { ……………………… return $this->db->getRow(1); } } |
Come potete vedere dall’esempio precedente siamo passati da un metodo con un’accozzaglia di variabili temporanee, dfra cui una contenente una costante, ad un insieme di semplici metodi autoesplicativi e richiamabili in più punti.
Come esempio può sembrare banale, ma applicato ad un programma complesso vi permette di risolvere ed eliminare molte fonti di bug.





Loading ...





Commenti recenti