9. Modules, use, pull, share
9. Modules, use, pull, share
Un module est une frontiĂšre : ce qui est dedans est stable, ce qui est dehors est protĂ©gĂ© par lâinterface. En pratique, câest le meilleur outil pour garder un projet lisible.
Charger un module
use std/cli
Vous importez ce dont vous avez besoin, rien de plus. Ce geste devrait toujours ĂȘtre intentionnel : on ne « tire » pas un module pour voir si ça marche.
Pull et partage
pull sert Ă importer du code local. share expose ce que vous voulez rendre public. Cette sĂ©paration force lâintention et limite les dĂ©pendances accidentelles.
Choisir une architecture
Un module par responsabilité. Des noms courts, alignés sur le domaine. Une hiérarchie stable qui facilite la navigation.
Interfaces fines
Une interface trop large invite les usages inattendus. Préférez une interface petite, lisible, et bien documentée. Un module qui fait peu, mais qui le fait bien, est une excellente brique.
Dépendances explicites
Une dĂ©pendance implicite devient un bug implicite. Rendez vos dĂ©pendances visibles, et limitezâles. Câest le meilleur moyen de garder un code portable.
Ă retenir
La modularité est votre meilleure défense contre les dépendances confuses.
Exemple guidé : scinder un module
Prenez un module qui gĂšre Ă la fois I/O et parsing. Scindezâle en deux modules. Vous verrez immĂ©diatement les bĂ©nĂ©fices en lisibilitĂ©.
Erreurs courantes
Importer un module âpar habitudeâ. Exposer trop de symboles publics. CrĂ©er une hiĂ©rarchie trop profonde.
Checklist modules
Un module = une responsabilité. Les interfaces publiques sont petites. Les dépendances sont visibles.
Exercice : modulariser un script
Prenez un script monolithique. DĂ©placez la logique dâI/O dans un module, et la logique mĂ©tier dans un autre. Mesurez la diffĂ©rence de lisibilitĂ©.
Code complet (API actuelle)
use std/cli
use std/io/print
entry main at core/app {
let args = args()
if has_flag(args, "--help") {
println_or_panic("help")
}
give 0
}
API idéale (future)
Un systĂšme de modules avec alias et reexports plus explicites pour les grands projets.