De vez en cuando se encontrará con un caso en el que podría tener sentido un nombre de método como getSafely()
(devuelve un valor predeterminado en el caso de que el valor real no sea válido, para el código que no le importa demasiado sobre los valores reales frente a los marcadores de posición) o su inverso getOrBlowUp()
(para el código de fallas donde un valor faltante es técnicamente posible pero indica un error en el código que se supone que establece el valor).
Pero el punto aquí no es "el método 2 se produce una excepción, el método 1 no" - porque, como se mencionó anteriormente, cualquier código podrían lanzar una RuntimeException
. El punto es que los dos métodos tienen una semántica diferente para el manejo de errores, específica para diferentes casos de uso, y que es lo que los nombres de los métodos intentan capturar.
Incluso entonces, el código generalmente sería más limpio si pudiera salirse con un comportamiento u otro, y llame al método get()
.
Un paralelo útil aquí podría ser the distinction between Systems Hungarian and Apps Hungarian en notación húngara. (Véase también this piece on coding conventions de Joel on Software.)
- Sistemas de Hungría sólo le dice el tipo de la variable, por lo que se convierte en número entero
count
iCount
. Esta es la forma más común de notación húngara y en mi humilde opinión es (1) bastante inútil con un IDE moderno y (2) potencialmente engañoso, si alguien cambia la declaración de tipo sin cambiar el nombre de la variable.
- Aplicaciones húngaro le indica la propósito de la variable, por lo entero (o ID de objeto corto, u ordinal, o lo que sea, a quién le importa?)
index
que representa una fila de datos se convierte en drIndex
y index
que representa una columna de anotación se convierte en acIndex
. Esto es mucho más útil y mucho menos probable que cause problemas.
Llamar a su método getEx()
es Systems Hungarian.
Spring LDAP tiene 4 métodos de "autentificación" que no arrojan excepciones. Me gustaría agregar un nuevo método de "autentificación" que * arroje^excepciones y sería preferible nombrar estos nuevos métodos algo que los diferenciaría de los que no lo hacen. – lyates
Existe una convención de nombres para los métodos opuestos, de mejor esfuerzo, que ignoran las excepciones y continúan: los métodos llamados safeClose no arrojan NullPointerExceptions, o IOException, o SQLException incluso cuando la operación de cierre falló. – Thilo
Necesito atrapar la AuthenticationException de los métodos de "autenticación" para poder explicar el motivo de la falla al usuario. – lyates