Relecture et refactorisation du code

Étude de cas : développer un logiciel en Python

Mark Pedigo

Principal Data Scientist

Atouts d'une revue de code périodique

  • Qualité du code améliorée
    • Détecter tôt les incohérences
  • Partage des connaissances
    • Collaboration
    • Rester alignés
  • Cohérence et bonnes pratiques
    • Exigences élevées

Deux personnes relisent du code sur un ordinateur

Étude de cas : développer un logiciel en Python

Exemple de revue de code

def factorial(n):
    if n == 0:
        return 1
    else:
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result

Donnez un retour sur :

  • Fonctionnalité
  • Lisibilité
    • Exemple - else inutile
  • Cas limites
    • Exemple - Nombres négatifs pour une factorielle
Étude de cas : développer un logiciel en Python

Atouts de la refactorisation du code

  • Qualité du code améliorée
  • Maintenance facilitée
  • Dette technique réduite

Des spaghettis se transforment en organigramme

Étude de cas : développer un logiciel en Python

Exemple de refactorisation

# Original code
def factorial(n):
    if n == 0:
        return 1
    else:
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result
# Refactored code
def factorial(n):
    if n < 0:
        raise ValueError("Not defined")

if n == 0: return 1
result = 1 for i in range(1, n + 1): result *= i return result
Étude de cas : développer un logiciel en Python

Nouvelle fonction pour une nouvelle formule

Formule précédente $$m = P \cdot \frac{r (1 + r)^N}{(1+r)^N - 1}$$ où $m$ est le paiement mensuel, $P$ le montant du prêt, $r$ le taux mensuel, et $N$ le nombre de mensualités

Nouvelle formule $$P = m \cdot \frac{(1+r)^N - 1}{r (1 + r)^N}$$

Étude de cas : développer un logiciel en Python

Feuille de route

Feuille de route indiquant les parties du projet terminées et celles à démarrer

Étude de cas : développer un logiciel en Python

Passons à la pratique !

Étude de cas : développer un logiciel en Python

Preparing Video For Download...