[Bonnes pratiques] Questions sur lisibilité

a marqué ce sujet comme résolu.

J’ai raté les noms de ceux qui disaient ça, mais +1 à avoir des is_fizz / is_buzz plutôt que des is_multiple_of. Cela correspond à ce qui est attendu, au métier. Et si les specs de l’un ou l’autre devait évoluer, cela résisterait mieux aux évolutions.

lmghs

En réalité, (et @nohar l’a déjà expliqué, il me semble) is_fizz et is_buzz ne correspondent pas à la description de l’énoncé (certes, celle citée par le premier message n’est clairement pas la meilleure).

C’est une interprétation qu’on fait parce que les termes fizz et buzz sont dans l’énoncé. Mais à aucun moment, on parle d’un nombre qui serait "fizz" ou "buzz"

Le métier, lui, parle de multiples de 3 et 5 (ou de nombres divisibles par 3 ou 5) qui donnent un mot contenant fizz, buzz ou les deux

De ma modeste expérience, c’est ce genre de réinterprétation de la part des devs qui conduit des projets à être difficiles à maintenir (voire au fameux projet de refonte…) : il faut se mettre à la place des devs qui arriveront sur le projet et qui auront des specs parlant de nombres multiples de 3 et 5 et un code qui parlent de nombres qui sont fizz ou buzz

De mon point de vue, le fizzbuzz parait simple sur papier mais si on n’arrive pas à refaire sortir le métier dans notre code comme énoncé par le métier, ça montre bien qu’il y a quelque chose qui coince quelque part…

Ce que vous dites est intéressant.

Après mon expérience est aussi que la spéc est incrémentale: "Il faut sortir du fizz et du buzz, quand la condition est divisible par 3 ou par 5". Et puis la spec change. Il est vrai que cela peut être autre chose que fizz ou buff. Mais cela peut aussi être des conditions plus complexes. D’où ma préférence à avoir des booléens qui ressembleraient à shall_produce_fizz, etc.

PS: cette discussion me rappelle l’EnterpriseFizzBuzzEdition. Si vous ne connaissez pas, je vous invite à regarder histoire d’avoir une belle frayeur.

Après mon expérience est aussi que la spéc est incrémentale.

Dans ce cas on refactorise le code pour qu’il traduise le nouvel état de la spec, en fait. C’est spécifiquement à ça que revient le TDD, d’ailleurs : construire le code par itérations d’une minute sur sa spec.

Les deux ne sont pas incompatibles, peut-être que lors d’une itération future il y aura une définition de isFizz et isBuzz parce que ça aura entre temps été défini pour exprimer le besoin/une évolution de celui-ci. Mais en attendant, il n’y a absolument pas lieu de l’anticiper.

Au final, le TDD nous apprend à être "bête et méchant", en ne tenant compte que de ce qui est avéré à l’instant T.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte