Tipo de título largo, pero esa es generalmente la pregunta.¿Es una buena idea usar aspectos como un método para eliminar verificaciones defensivas de la lógica de la aplicación?
Quiero saber si crees que es una buena idea hacer lo siguiente.
En lugar de:
public void buyItem(int itemId, int buyerId) {
if (itemId <= 0) {
throw new IlleglArgumentException("itemId must be positive");
}
if (buyerId <= 0) {
throw new IlleglArgumentException("buyerId must be positive");
}
// buy logic
}
quiero tener algo como:
@Defensive("isPositive(#itemId, #buyerId)")
public void buyItem(int itemId, int buyerId) {
// buy logic
}
¿Cree que esto es bueno/horrible/demasiado elegante/demasiado lento? Si realmente piensa que es bueno, estaba pensando en usar SpEL para implementarlo, ¿alguien tiene algo mejor/más ligero/más rápido en mente?
Gracias,
e introduce otro idioma dentro de las anotaciones . –
En realidad, esta pregunta se me metió en la cabeza exactamente como un efecto secundario del uso de '@ Secured'. Pero como ya usamos '@ Secured' para la seguridad de nivel de método, sería confuso usarlo para defender IMO, por eso estoy pidiendo ideas sobre cómo hacerlo y desde' @ Secured' y '@ PreAuthorize' utilizo SpEL I pensé que esa era la elección obvia. – Simeon
¿Por qué el voto a favor? – Simeon