Home > Refactoring > PHP Refactoring – Lez. 3: metodi di una classe

PHP Refactoring – Lez. 3: metodi di una classe

La lunghezza del corpo del metodo non deve superare le 40 righe

Il codice inserito all’interno di un metodo non deve essere troppo lungo altrimenti si perde la visibilità dei blocchi in esso contenuti.

Se scriviamo un if condizionale troppo lungo, e al suo interno abbiamo altri blocchi, sia condizionali che ciclici, sicuramente potremmo incappare nel problema di capire dove vengono chiusi; senza considerare il caso in cui riapriamo il file e la formattazione è andata a farsi benedire.

Possiamo considerare un numero di 40 righe come adeguato alla lunghezza, riga più riga meno.

Il numero dei parametri non deve superare un massimo di 4

Quando passiamo dei parametri ad un metodo, il loro numero non deve essere elevato, perchè in questo caso il problema può consistere in un eccesso di azioni racchiuse nella funzione della classe, e quindi ricadiamo nel caso della frammentazione in ulteriori metodi, oppure siamo in presenza di parametri che possono essere raggruppati in un oggetto come sue proprietà. Guardate il seguente esempio:

class Aula {

private $nomiAlunni = array();

private $cognomiAlunni = array();

private $matricolaAlunni = array();

public function registra($nome, $cognome, matricola) {

$this->addNomeAlunni($nome);

$this->addCognomeAlunni($cognome);

$this->addMatricolaAlunni($matricola);

}

public function addNomeAlunni($valore, $chiave=null) {…}

public function removeNomeAlunni($chiave=null) {…}

public function getNomeAlunni($chiave=null) {…}

public function addCognomeAlunni($valore, $chiave=null) {…}

public function removeCognomeAlunni($chiave=null) {…}

public function getCognomeAlunni($chiave=null) {…}

public function addMatricolaAlunni($valore, $chiave=null) {…}

public function removeMatricolaAlunni($chiave=null) {…}

public function getMatricolaAlunni($chiave=null) {…}

}

Per vedere il codice che è contenuto nei metodi addXXX, removeXXX e getXXX andate all’articolo PHP Refactoring – Lez. 2: proprietà array di una classe.

Come vedete, i parametri passati al metodo possono essere racchiusi, come proprietà, all’interno di un oggetto Alunno, riducendo considerevolmente il codice e rendendolo più leggibbile:

class Alunno {

private $nome;

private $cognome;

private $matricola;

public function setNome($valore) {…}

public function getNome() {…}

public function setCognome($valore) {…}

public function getCognome() {…}

public function setMatricola($valore) {…}

public function getMatricola() {…}

}


class Aula {

private $alunni = array();

public function registra($alunno) {

$this->addAlunni($alunno);

}

public function addAlunni($valore, $chiave=null) {…}

public function removeAlunni($chiave=null) {…}

public function getAlunni($chiave=null) {…}

}


$objAlunno = new Alunno();

$objAlunno->setNome(”Marco”);

$objAlunno->setCognome(”Rossi”);

$objAlunno->setMatricola(123456);

$objAula = new Aula();

$objAula->registra($objAlunno);

Per vedere il codice che è contenuto nei metodi setXXX e getXXX andate all’articolo PHP Refactoring – Lez. 1: proprietà  di una classe.

Come potete notare il codice adesso è più leggibile, pulito e compatto, non credete ?

Alla prossima lezione.

  1. 17 Dicembre 2008 a 17:34 | #1

    Действительно классная темка.

  2. Nicola
    18 Dicembre 2008 a 17:59 | #2

    спасибо Вам за комментарий

    Nicola

  1. Nessun trackback ancora...
*