Dans mon entreprise, un système est conçu pour avoir 3 couches. Layer1 est responsable du traitement de la logique métier. Layer3 appelle les systèmes d'extrémité. Layer2 se trouve entre les deux couches de sorte que layer1 n'a pas besoin de connaître les systèmes dorsaux. Pour relayer les informations de layer3, layer2 doit définir l'interface avec layer1. Par exemple, layer1 veut vérifier si un code PIN de l'utilisateur est correct. Il appelle la méthode layer2 checkPin(), puis layer2 appelle le système back-end approprié. Les résultats checkPin() peuvent être: correctPin, inCorrectPin et internalError. À l'heure actuelle, nous avons défini le type de retour 'int'. Donc, si layer2 renvoie 0, cela signifie correctPin; si 1 est retourné, cela signifie inCorrectPin; Si 9 est retourné, cela signifie internalError.Type de retour de méthode
Cela fonctionne. Cependant, je me sens un peu mal à l'aise avec cette approche. Y a-t-il de meilleurs moyens de le faire? Par exemple définir un enum CheckPinResult {CORRECT_PIN, INCORRECT_PIN, INTERNAL_ERROR}, et le type de retour CheckPinResult?
Merci, Sarah
Utilisez des exceptions sur chaque couche. Si une couche échoue, vous interceptez cette exception. De cette façon, vous savez quel calque a échoué. C'est une suggestion, alors pourquoi je ne l'ai pas affiché comme réponse. –
Oui, j'ai compris. Ce que nous faisons en ce moment, c'est enregistrer les erreurs quand c'est une erreur interne. S'il y a une exception, nous l'attrapons et l'enregistrons dans layer1. Layer2 et Layer3 l'escaladent vers une couche supérieure. – sarahTheButterFly
Je pense que ce qu'Elite a dit était de créer une exception Personnalisée de chaque couche. Ce sont des exceptions d'affaires et c'est ce que nous faisons. Cela aide aussi quand vous utilisez les couches comme API, les développeurs extérieurs seront capables de gérer les erreurs. –