Et pour les chagrins qui veulent du code dans leur case: on peut utiliser une std::function (mais il y a un coût caché). Un truc du genre :
C'est ce que je fais de plus en plus (alors que mon langage a un switch sur les java.lang.String ;) ). Je vois de plus en plus de problèmes aux switch/case :
ils alourdissent fortement le code
chaque case leak son contexte avec le reste du code
ils sont piégeux (qui n'a pas un jour oublié le break ?)
il est difficile de tester chaque case
il est possible d'ajouter des fonctions mais ça ne rend pas le code énormément plus simple
lorsqu'il s'agit juste de choisir une valeur (encore plus que lorsqu'il s'agit d'un calcul), on voudrait pouvoir être totalement déclaratif ('a' → 12, 'b' → 642, 'r' → 727,...)
Du coup pour toutes ces raisons j'ai une lourde préférence pour utiliser une Map. Je la déclare et construit en statique à la classe, donc le coût de construction n'est payé d'une seule fois par exécution et tant que je n'ai pas de vrai besoin de performance (et que l'on a pas encore établi que les problème venait de là) je garde le tout sous cette forme.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
# Map à la place du swicth/case
Posté par barmic . En réponse au journal Switch, chaîne constante et c++. Évalué à 7.
C'est ce que je fais de plus en plus (alors que mon langage a un switch sur les java.lang.String ;) ). Je vois de plus en plus de problèmes aux
switch/case:caseleak son contexte avec le reste du codebreak?)caseDu coup pour toutes ces raisons j'ai une lourde préférence pour utiliser une Map. Je la déclare et construit en statique à la classe, donc le coût de construction n'est payé d'une seule fois par exécution et tant que je n'ai pas de vrai besoin de performance (et que l'on a pas encore établi que les problème venait de là) je garde le tout sous cette forme.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)