• # Map à la place du swicth/case

    Posté par . En réponse au journal Switch, chaîne constante et c++. Évalué à 7.

    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)