• 4 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis Ă  jour le 18/02/2022

🛠 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 !

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