Révision et remaniement du code

Étude de cas : créer des logiciels en Python

Mark Pedigo

Principal Data Scientist

Avantages d'une révision périodique du code

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

Deux personnes qui révisent du code sur un ordinateur

Étude de cas : créer des logiciels en Python

Exemple de révision 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 une rétroaction sur :

  • Fonctionnalité
  • Lisibilité
    • Exemple : else inutile
  • Cas limites
    • Exemple : nombres négatifs pour une factorielle
Étude de cas : créer des logiciels en Python

Avantages du remaniement du code

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

Des spaghettis transformés en organigramme

Étude de cas : créer des logiciels en Python

Exemple de remaniement

# 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 : créer des logiciels 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 d'intérêt mensuel et $N$ le nombre de paiements mensuels

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

Étude de cas : créer des logiciels en Python

Feuille de route

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

Étude de cas : créer des logiciels en Python

Passons à la pratique !

Étude de cas : créer des logiciels en Python

Preparing Video For Download...