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?