• 4 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis Ă  jour le 07/10/2017

🛠 Ajoutez une fonctionnalité en TDD : refactorez !

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

 

La dernière étape est l'amélioration de notre code !

Personnellement, je vois tout de suite une partie que je pourrais améliorer : la méthode  xy_values. Les instructions dans la classe  AgreeablenessPerAgeGraph()  sont très similaires à celles de la même méthode mais dans la classe  IncomeGraph(). Comment pouvons-nous faire ?

Nous allons créer une nouvelle méthode dans la classe mère,  BaseGraph()  :

class BaseGraph:

    ...
 
    def _stat_by_age(self, zones, property_name): 
        stat_by_age = defaultdict(float)
        population_by_age = defaultdict(int)

        for zone in zones:
            for inhabitant in zone.inhabitants:
                stat_by_age[inhabitant.age] += getattr(inhabitant, property_name)
                population_by_age[inhabitant.age] += 1

        x_values = range(0, 100)
        y_values = [stat_by_age[age] / (population_by_age[age] or 1) for age in range(0, 100)]
        return x_values, y_values

 

Puis l'appeler dans la classe  IncomeGraph()  : 

class IncomeGraph(BaseGraph):

    ...

    def xy_values(self, zones):
        return self._stat_by_age(zones, "income")

Je relance les tests : tout est vert  ✅. Je peux alors effectuer la même opération pour la méthode  xy_values()  de la classe  AgreeablenessPerAgeGraph.

class AgreeablenessPerAgeGraph(BaseGraph):

    ...

    def xy_values(self, zones):
        return self._stat_by_age(zones, "agreeableness")

Nous avons fini notre dernière étape de refactoring ! Vous pouvez être fièr·e de vous !

 

Code de ce chapitre

Retrouvez le code de ce chapitre sur Github !

Exemple de certificat de réussite
Exemple de certificat de réussite