Sto creando un gestore errori per un'API su cui lavoro. L'idea è che fornisca un unico archivio di codici di errore che possono essere restituiti dall'API, assicurando che lo stesso errore nelle diverse chiamate sia gestito allo stesso modo (ad esempio, il valore richiesto mancante dalla richiesta).Come evitare numeri magici senza creare dipendenze
Il mio approccio iniziale era lungo le linee di:
$this->_errorManager->setError(ErrorCodes::REQUIRED_FIELD);
Tuttavia, questo crea una dipendenza dalla classe codici di errore da nessuna parte Voglio impostare un errore.
L'alternativa è:
$this->_errorManager->setError(100);
Ma ora ho un certo numero seduto nel mezzo del mio codice che non significa nulla.
Mentre riesco a pensare a soluzioni a questo problema specifico, ci saranno altre situazioni in cui vorrò usare un 'enum' e non riesco a pensare a una soluzione che non accoppiasse strettamente le classi.
C'è un modo migliore di fare questo o un approccio diverso che posso prendere per rimuovere i numeri magici? O è l'accoppiamento stretto qualcosa che devo solo accettare e considerare caso per caso?
Non chiamerei questo "accoppiamento", poiché "ErrorCodes' non ha alcun * comportamento *. È una buona pratica e sicuramente non merita le connotazioni negative del termine. Potresti volerlo pensare come "un'entità logica implementata come due classi fisiche" piuttosto che come "due entità logiche accoppiate insieme". – Jon