• # Lisibilité du code

    Posté par (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 10.

    La solution est plutôt amusante, je vous mets une version simplifiée ci-dessous

    Ben heureusement que c'était la version simplifiée ;-)

    Bon j'imagine bien qu'ici il s'agit plus d'un exercice de style que la recherche d'une réelle solution à mettre en production.

    D'un point de vue lisibilité du code, je trouve personnellement que :

    • Cascade de if/else : il me faut moins d'une seconde pour reconnaître la structure du code, même si c'est un peu moche car répétition du « else if (str == ».
    • La solution soit disant « élégante » avec les templates : je n'ose imaginer le temps que ça me prendrait pour me rendre compte de quoi il s'agit... Heureusement que je savais qu'on essayait de reproduire une cascade de if/else.
    • std::function : c'est mieux que la précédente (templates), mais ce n'est pas plus beau que les if/else (il y a tout plein de symboles qui ne rendent pas les choses plus lisibles à mon sens). Je pense qu'il me faut ~10 secondes pour être certain de bien interpréter (comprendre : qu'il n'y a pas un piège subtile qui se cache derrière cette conception).
    • Approche C++14 : ça commence à ressembler à quelque chose de lisible (je comprends vite la structure), mais on dévoile ici des choses de bas niveau (comme la comparaison de hash) qui polluent un peu la lecture.

    Finalement, je crois que je préfère la version if/else, qui même moche, me semble plus expressive car moins polluée par des détails bas niveau du langage (le concept de switch/case c'est quand même du niveau très bas, et là ça donne une impression de vouloir inventer une roue de manière compliquée).

    J'aimais beaucoup le C++ quand j'étais jeune, mais depuis j'accorde de plus en plus d'importance à la lisibilité et le C++ me paraît de plus en plus compliqué de ce point de vue là. Parfois, j'aurais plus envie de le classer comme un langage d'artiste que comme un langage industriel. Bien sûr, on peu se restreindre à faire du code assez simple, mais j'ai toujours peur de devoir repasser derrière un artiste x_x