2008-09-25 21 views
7

Casi me siento avergonzado de preguntar, pero siempre lucho con la forma de organizar las definiciones de excepción. Las tres formas en que he hecho esto anteriormente son:¿Cómo prefiere organizar las definiciones de excepción?

  • Utilice la regla de archivo por clase. No estoy loco por esto porque complica mi estructura de directorios y espacios de nombres. Podría organizarlos en subdirectorios y segmentar espacios de nombres para ellos, pero realmente no me gusta eso, y así no es como suelen hacerlo las bibliotecas estándar.
  • ponga las definiciones en un archivo que contenga la (s) clase (s) relacionada (s). Realmente tampoco me gusta esto porque las definiciones de excepción están dispersas y pueden ser difíciles de encontrar sin la ayuda de una herramienta de navegación de código.
  • Un archivo con todas las definiciones de excepción para un espacio de nombres o "paquete" de clases relacionadas. Esto es un tipo de compromiso entre los dos anteriores, pero puede dejar situaciones en las que es difícil saber qué excepciones "pertenecen" a un grupo particular de clases o conjunto de funcionalidades.

Realmente no me gusta nada de lo anterior, pero ¿hay algún tipo de práctica que no he aprendido que sería mejor?

Editar: Interesante. A partir de la "programación de Microsoft Visual C# 2008: El lenguaje", sugiere Donis:

Para mayor comodidad y facilidad de mantenimiento, excepciones de aplicación Implementar como un grupo en un montaje separado. (p.462)

Me pregunto por qué?

+0

¿Cómo es este lenguaje-agnóstico? – ykaganovich

+0

¿Cómo no es? Varios idiomas tienen soporte de excepción. –

+0

Su pregunta no tiene ningún sentido en Java ... o JavaScript ... suena como algo específico de .NET – ykaganovich

Respuesta

2

utilizo los siguientes enfoques:

  • clase de excepciones en un archivo separado: cuando es genérico y puede ser lanzado por más de una clase
  • clase de excepción junto a la clase tirarlo: cuando hay solo una de esas clases. Esto tiene sentido porque la excepción forma parte de la interfaz de esa clase

Una variante de esta última hace que la excepción sea miembro de la clase de lanzamiento. Solía ​​hacer eso, pero me resultaba engorroso.

4

Tiendo a colocar las excepciones una por archivo en el mismo paquete que los objetos que las producen, en archivos individuales. Este es el paradigma utilizado por las API de Java y las bibliotecas .Net, por lo que la mayoría de las personas están al menos familiarizadas con la organización de los objetos en ese punto.

Los IDE modernos hacen un trabajo lo suficientemente bueno para hacer un seguimiento de los archivos en un directorio que los beneficios de tener la clase en un archivo con el mismo nombre superan el valor de tener menos archivos.

3

En C++, siempre he definido clases que usaré como excepciones en el mismo espacio de nombres que las clases que las arrojan, colocándolas en el mismo encabezado. Para excepciones de uso general, que se compartirán entre clases, utilizo un único encabezado para agruparlas, junto con otras funciones de utilidad y clases.

No creo que haya una manera correcta de hacer las cosas a este respecto; es lo que funciona para usted en su contexto.

Cuestiones relacionadas