Je ne sais pas ce qu'il en est pour le C++, mais en Java j'utilise surtout beaucoup les références de méthodes. Du coup j'utilise des méthodes comme des lambda.
classA{publicintfoo(){/* ma méthode */}publicCollection<Integer>bar(Collection<A>as){returnas.stream().map(A::foo)/* ici je donne une référence de méthode comme lambda */.collect(Collectors.toList());}}
D'ailleurs les lambda aussi peuvent avoir un nom :
Function<A,B>myName=a->newB(a);Function<A,B>myName2=B::new;// identique à au dessus
Pour ce qui est de ton debogage c'est un problème de ton debogueur.
Pour la lecture, le fait d'avoir au même endroit permet de ne pas avoir à mettre ceinture et bretelles. Si tu a validé tes données dans le code appelant inutile de le faire dans le code appelé. Au lieu de fonctionner en boite noire avec des méthodes qui s’enchaînent un peu trop, tu regroupe un peu ton code utile ensemble.
Les lambdas permettent des choses intéressantes comme l'évaluation paresseuse de paramètre ou l'utilisation d'API de plus au niveau pour manipuler les conteneurs (avec des map(), filter(), find(), etc).
Mais sinon oui, les lambda faut les utiliser avec parcimonie.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: À suivre?
Posté par barmic . En réponse au journal C++ Core Guidelines. Évalué à 4.
Je ne sais pas ce qu'il en est pour le C++, mais en Java j'utilise surtout beaucoup les références de méthodes. Du coup j'utilise des méthodes comme des lambda.
D'ailleurs les lambda aussi peuvent avoir un nom :
Pour ce qui est de ton debogage c'est un problème de ton debogueur.
Pour la lecture, le fait d'avoir au même endroit permet de ne pas avoir à mettre ceinture et bretelles. Si tu a validé tes données dans le code appelant inutile de le faire dans le code appelé. Au lieu de fonctionner en boite noire avec des méthodes qui s’enchaînent un peu trop, tu regroupe un peu ton code utile ensemble.
Les lambdas permettent des choses intéressantes comme l'évaluation paresseuse de paramètre ou l'utilisation d'API de plus au niveau pour manipuler les conteneurs (avec des
map(),filter(),find(), etc).Mais sinon oui, les lambda faut les utiliser avec parcimonie.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)