¿Tiene alguna guía de equipo con respecto a las excepciones? [cerrado]

8

Mi equipo recientemente heredó un proyecto de un equipo donde la cantidad de desarrolladores se redujo tanto que tuvieron que descargar algo de trabajo. Uno de los proyectos que heredamos fue un proyecto lleno de código anidado y un manejo de excepciones horrible (las excepciones se manejaron en efecto como declaraciones goto y, por lo tanto, se usaron como parte del flujo normal del programa).

En general, era una bola de código peluda que alguien había estado tosiendo durante unos años.

Ahora hemos estado implementando algunas pautas de equipo durante bastante tiempo, pero todos los aspectos relacionados con las estructuras de los objetos, los estilos de codificación y demás. Pero no hemos cubierto el manejo de excepciones.

Entonces, me pregunto si tiene pautas en sus equipos con respecto al manejo de excepciones, y si es así, ¿cómo las aplica?

Morten
fuente
¿Te refieres a la aplicación social o la aplicación tecnológica? Hay muchas herramientas de análisis de código estático para detectar patrones de excepción abusados.
MatthewMartin
Bueno los dos de verdad.
Morten
Puede ser más sencillo refactorizar el código para verificar las condiciones previas primero y regresar antes de la función si no se cumple alguna condición previa. Además, varios gurús prominentes consideran que finally(la lógica de reversión) es la parte más valiosa de un sistema de manejo de excepciones.
rwong

Respuestas:

4

Aunque no son pautas oficiales en ningún equipo en el que he estado, creo que las excepciones solo deben usarse para condiciones verdaderamente excepcionales, o cuando absolutamente (por alguna razón) tiene que levantar las manos y dejar que la persona que llama ( o burbujee desde su punto actual, potencialmente hasta el usuario) sepa que no hay absolutamente ninguna manera de que un componente en particular pueda funcionar bajo las condiciones actuales y que no sea posible recuperarse sin algún tipo de intervención externa (otro módulo o usuario) .

Thomas Owens
fuente
1

No tenemos reglas específicas para el manejo de excepciones para nuestro equipo, excepto las habituales: no use excepciones para el comportamiento 'normal', no se trague silenciosamente excepciones, etc.

El análisis estático puede ayudarlo a detectar algunos de ellos (según el idioma que utilice), pero estará más seguro con las revisiones de código.

Xavier Nodet
fuente
1

Actualmente no tenemos pautas explícitas, principalmente porque nadie en mi equipo lo hace mal. (A diferencia de muchos otros temas, existe un consenso general sobre cuándo y cómo se deben utilizar las excepciones)

Pero definitivamente los implementaría el mismo día que veo una excepción abusada como un goto.

usuario281377
fuente
0

Creo que las excepciones deberían ser excepciones. Creo que es abusivo y genera gastos generales al usar excepciones como flujo de trabajo en su código. Por lo tanto, manténgalos detallados y úselos solo cuando ocurra algo inesperado.

Nota: bandeja para evitar los errores más comunes, como no pasar la base de datos de conexión a una función, o cosas por el estilo. En cambio, úselos cuando la clave principal no exista y la necesite para hacer algo.

Guiman
fuente
0

Me da pena que haya tenido que heredar el código de personas que abusan de las excepciones para ser declaraciones tipo goto.

Siempre intento atraparlos cuando puede ocurrir cualquier entrada del usuario o algo más allá de mi control (por ejemplo: IOExceptions), pero cualquier cosa que pueda ser un error de codificación (por ejemplo: NullPointerException) es algo que trataría de atrapar con afirmaciones al principio del desarrollo.

El rendimiento de ese tipo de codificación es un gran negativo. Me pregunto si la compañía se estaba reduciendo debido a que los desarrolladores terribles se metieron en un desastre más allá de la comprensión ...

Agua
fuente