• [^] # Re: Je pense que tu confonds les cas où c'est nécessaire

    Posté par . En réponse au journal Genèse d'un journal. Évalué à 6.

    on en arrive à […] une complexité de 4

    En fait, non. Coupons un peu les cheveux en quatre, ça ne prend pas longtemps de s ́amuser un peu. ;-)

    Le raisonnement suivant suit la description de la page en anglais de Wikipedia, qui est plus fournie que la page en français sur la complexité cyclomatique.

    Soit on considère que les deux return représentent deux points de sortie distincts, et on a le graphe suivant:

    E ----> foo? --(foo KO)----------------------------------+
     | |
     +--(foo OK)--> bar? --(bar KO) ----> undo_foo --+--> X1
     |
     +----------------------------------> X2
    
    

    Dans ce cas, la formule donne: M = π - s + 2, avec :

    • π = 2 points de décision: foo? et bar?
    • s = 2 points de sortie: X1 et X2
    • soit M = 2 - 2 + 2 = 2

    Maintenant, si on considère les deux return comme étant un seul et unique point de sortie, le graphe devient:

    E ----> foo? --(foo KO)-------------------------------------+
     | |
     +--(foo OK)--> bar? --(bar KO) ----> undo_foo --+ |
     | | |
     +-------------------------------+--+--> X
    
    

    Et la formule donne :

    • π = 2 points de décision: foo? et bar?
    • s = 1 point de sortie: X
    • soit M = 2 - 1 + 2 = 3

    Donc, pas 4. Et les mouches ont mal, maintenant. ;-)

    Hop,
    Moi.