^Logo by Utilisez Try ou Either depuis Vavr.
Un cas où Stream traite une valeur et vous devez gérer une exception vérifiée dans une expression lambda au milieu.
Remarque: veuillez penser qu'il est difficile de changer le BookReader
car il est externe.
Cas où l'erreur d'exécution est remplacée par RuntimeError. Si vous gérez correctement les erreurs dans une méthode ou dans une plage privée, il est difficile de lancer des exceptions dans le monde public. De plus, je crains que même si je ne le fais pas maintenant, je puisse le faire avec désinvolture.
Droite. Je pense que c'est mieux que de lancer une RuntimeError. Le nombre de variables locales est passé de 0 à 2, la quantité de codage a plus que doublé et l'imbrication est de 2 niveaux plus profonde, mais si toute l'équipe en est satisfaite, ce serait bien. ..
Par exemple, Golang utilise des tapples (un ensemble de plusieurs instances) pour propager des résultats anormaux à l'appelant, mais Java ne prend pas en charge les tuples au niveau de la spécification du langage. Vous pouvez le remplacer en créant une classe, mais pour la programmation fonctionnelle, Scala et Haskell ont de meilleures idées.
Vavr est une bibliothèque qui facilite la programmation fonctionnelle en Java.
Either
Une classe qui prend une valeur «Droite» ou «Gauche». Il est habituel de régler «Droite» pour le système normal et «Gauche» pour le système anormal. (calembour)
Je pense que ce serait bien si vous pouviez avoir une version améliorée de ʻOptional. Avec ʻOptional
, seules les informations indiquant s'il est ou non null
peuvent être envoyées en aval du Stream, mais avec ʻEither`, des valeurs telles que des exceptions peuvent être envoyées.
Try
C'est une classe pour écrire try-catch en tant que type de fonction tel quel. Vous pouvez recevoir une expression lambda qui peut lever une exception vérifiée et exprimer ce qui se passe lorsqu'une exception se produit sous la forme d'un lambda.
Considérez cela comme une version améliorée de ʻOptional qui contient des valeurs normales ou anormales, tout comme ʻEither
.
En regardant seulement l'atmosphère, il semble que Try soit une option, mais dans Try, l'entrée d'un traitement anormal devient Throwable
et le downcast a tendance à se produire, donc il y a des cas où écrire avec ʻEither` ne fait pas de mal.
Par exemple, je pense que cela ressemblera à ceci.
Either:
Try:
Notez que Try est jette Throwable
. Si vous voulez le gérer correctement, vous devrez abattre.
Une fois que vous commencez à utiliser Vavr dur, il ne ressemblera plus à Java et sera difficile à maintenir, et vous commencerez à vous demander pourquoi vous n'utilisez pas Scala ou Haskell, il est donc recommandé de l'utiliser comme une pincée.
Vous n'êtes pas obligé de continuer à utiliser Java de force? Peut être conseillé au patron.
Je me demande s'il s'agit d'OSS ...
Recommended Posts