Setter e verifica il valore nullo

0

Abbiamo a che fare con molti valori nulli, ora e ci chiediamo se ci sono degli standard per evitarlo in alcuni punti del codice.

Ad esempio, ho questo codice PHP:

class X
    {
        function setName(string $name)
        {
            $this->name = $name;
        }
    }

$x = new X;

//Will throw exception
$x->setName(null);

O ho questo codice:

class X
{
    function setName(string $name = null)
    {
        $this->name = (string) $name;
    }
}

$x = new X;

//Will not throw exception
$x->setName(null);

L'ultimo codice non è veramente accurato, perché null non dovrebbe essere un valore consentito, ma evita l'eccezione del puntatore nullo.

L'alternativa potrebbe essere un'istruzione if o una stringa cast per ogni chiamata al metodo:

class X
{
    function setName(string $name)
    {
        $this->name = (string) $name;
    }
}

$x = new X;

if($value = $entity->getValue())
{
    $x->setName($value);
}


or 

$x->setName((string) $entity->getValue());

Secondo me, il cast to string (ultimo esempio) è la soluzione più leggibile.

Esistono regole o standard che le società seguono per gestire questo tipo di errori? O quale dovrebbe essere il modo migliore per la programmazione orientata agli oggetti?

    
posta Stefan 01.09.2017 - 10:06
fonte

1 risposta

6

Non evitare di lanciare eccezioni e continuare con dati non validi, perché allora tutto il resto deve continuare con dati non validi. Le cose diventano sempre più prive di significato quando ciò accade.

Devi lanciare il prima possibile. Se richiedi che $entity->getValue() non restituisca mai null , non dovrebbe mai essere in grado di restituire null , perché hai emesso da qualche parte in precedenza .

Prendi quindi delle eccezioni nel punto in cui puoi fare progressi senza che ciò avvenga. Questo potrebbe essere al livello più alto, restituendo "404, nessuna pagina oggi, scusa" se non hai altra opzione.

    
risposta data 01.09.2017 - 10:32
fonte

Leggi altre domande sui tag