Structuration des programmes

đŸ§© 1. ModularitĂ©

🔍 DĂ©finition

La modularitĂ©, c’est l’idĂ©e de dĂ©couper un programme en morceaux indĂ©pendants (des modules ou fonctions) qui ont chacun un rĂŽle prĂ©cis.

Un module bien conçu = une brique qu’on peut tester, rĂ©utiliser ou modifier sans toucher au reste du programme.

✅ Avantages de la modularitĂ©

AvantageDétail
LisibilitéLe code est plus facile à lire
RéutilisabilitéOn peut réutiliser une fonction dans plusieurs programmes
Débogage plus simpleSi un module bug, on peut le tester isolément
Travail en équipeChacun peut coder un module séparément

đŸ› ïž Exemple simple

def ajouter(a, b):
    return a + b

def demander_nombres():
    a = int(input("Entrez un nombre : "))
    b = int(input("Entrez un autre : "))
    return a, b

def main():
    x, y = demander_nombres()
    print("Résultat :", ajouter(x, y))

main()

On voit ici :


📁 2. DĂ©coupage en fichiers / modules

đŸ§± Pourquoi dĂ©couper un programme en fichiers ?

Quand un projet devient long (plus de 100-200 lignes), il devient essentiel de séparer le code dans plusieurs fichiers :


🔌 Comment importer un fichier Python ?

Si on a un fichier maths_utiles.py :

# maths_utiles.py
def carre(x):
    return x * x

On peut l’utiliser dans un autre fichier :

# programme.py
import maths_utiles

print(maths_utiles.carre(5))  # Affiche 25

🧠 Import avancĂ©

from maths_utiles import carre

print(carre(5))

📂 Organisation typique d’un projet

mon_projet/
│
├── main.py             # Point d’entrĂ©e
├── utils.py            # Fonctions gĂ©nĂ©rales
├── data/
│   └── base.json       # DonnĂ©es
├── modules/
│   ├── analyse.py
│   └── affichage.py
└── README.md           # Explication du projet
Un bon projet est bien organisé, commenté et découpé.

🎯 3. Mini-projets / Cas pratiques

đŸ•č Exemple 1 : Calculatrice en modules


🎼 Exemple 2 : Jeu "Devine le nombre"


📁 Exemple 3 : Analyse de texte


đŸ§č 4. Bonnes pratiques de structuration

📘 1. Nommer clairement les fonctions

def charger_donnees():  # clair
def f1():               # obscur

đŸ§Œ 2. Ne jamais tout faire dans main()

Séparer les responsabilités !

📩 3. Un fichier = un rîle

Exemple :

đŸ§Ș 4. Ajouter des tests unitaires

def somme(a, b):
    return a + b

def test_somme():
    assert somme(2, 3) == 5
    assert somme(-1, 1) == 0

test_somme()

🧠 À retenir

ÉlĂ©mentPourquoi c’est important ?
ModularitéRéutiliser et maintenir facilement
Fonctions bien nomméesComprendre le code rapidement
Découpage en fichiersOrganiser les gros projets
ImportsRĂ©utiliser du code d’un fichier Ă  l’autre
main()Centraliser l’exĂ©cution