Questo è emerso nella revisione del codice al lavoro nel contesto di PHP e @
operatore . Tuttavia voglio provare a mantenere questo in forma più generica, dal momento che poche domande su di esso che ho trovato su SO sono impantanate in specifiche tecniche.
L'accesso al campo dell'array, che non è impostato, genera un messaggio di errore e viene comunemente gestito seguendo la logica (pseudo codice):
if field value is set
output field value
Il codice in questione lo stava facendo come:
start ignoring errors
output field value
stop ignoring errors
Il ragionamento di quest'ultimo è che è il codice più compatto e leggibile in questo caso specifico. Sento che questi benefici non giustificano l'uso improprio (IMO) della meccanica linguistica.
-
Un tale codice è in "cattiva" cattiva gestione?
-
È possibile scartare eventuali errori (per qualsiasi motivo) pratica accettabile per gestirla esplicitamente (anche se ciò porta a un codice più esteso e / o intensivo)?
-
È accettabile per gli operatori di programmazione attraversare i confini dell'uso previsto (come in questo caso utilizzando la gestione degli errori per il controllo dell'output)?
Modifica
Volevo mantenerlo più generico, ma il codice specifico in discussione era simile a questo:
if ( isset($array['field']) ) {
echo '<li>' . $array['field'] . '</li>';
}
rispetto al seguente esempio:
echo '<li>' . @$array['field'] . '</li>';