La nostra libreria estende un'altra libreria (di terze parti). Quando creiamo una classe child nella nostra libreria e vogliamo generare eccezioni, queste eccezioni dovrebbero estendere le eccezioni dalla classe genitore o dal nostro spazio dei nomi? Ad esempio:
class Their_Exception extends Exception {}
class Their_Class {}
class Their_Class_Exception extends Their_Exception {}
class Our_Exception extends Exception {}
class Our_Class extends Their_Class {}
class Our_Class_Exception extends Our_Exception {} // or Their_Class_Exception?
È meglio mantenere il nostro codice come sopra e ampliare il nostro spazio dei nomi? Per come la vedo io, abbiamo queste alternative:
- Estendi il nostro spazio dei nomi, recuperando tutti i possibili casi di
Their_Class_Exception
e gettandoOur_Class_Exceptions
al loro posto (incapsulamento completo, ma in generale potrebbe essere una buona quantità di rilavorazione) - Estendi il nostro spazio dei nomi, ma non prendi solo
Their_Class_Exception
inOur_Class
(probabilmente significa più blocchi catch) - Estendi
Their_Class_Exception
(sembra contro-intuitivo, potrebbe introdurre bug rilevando le eccezioni sbagliate)
Quale di questi è l'approccio migliore in generale, al fine di mantenere il nostro codice coerente?