Rust force à avoir une meilleure architecture de code, et permet d'éviter en grande partie ce que j'appelle l'« architecture spaghetti » où tout dépend de tout (« sea of objects » en anglais, mais en bon français ça sonne moins bien ;) ).
(L'expression « code spaghetti » est plus général et peut ne concerner qu'un seul fichier source / une seule classe).
Rust, en d'autres mots, force à avoir une architecture ressemblant à un arbre :
- Il y a les feuilles : fonctions et classes utilitaires ne dépendant de rien d'autres de ce module (ça peut évidemment dépendre d'autres bibliothèques).
- Puis d'autres classes dépendant des « feuilles ».
- Et ainsi de suite en remontant l'arbre, on construit des trucs au-dessus des autres.
- Pour arriver à la fonction main() qui est le nœud tout au-dessus de l'arbre (le point d'entrée pour le programme ; pour une bibliothèque il y a plusieurs points d'entrées : les symboles exportés).
(Pour rester compréhensible j'utilise le vocabulaire usuel de la POO, pas le vocabulaire spécifique à Rust).
Le truc à éviter est si une classe feuille dépend d'une classe proche de la racine. Une classe proche de la racine a potentiellement accès à tout le reste du module. Donc c'est comme ça que « tout dépend de tout » et c'est entremêlé comme des spaghetti (cuits).
Avoir une architecture de classes sous forme d'arbre, ou un DAG (directed acyclic graph) est tout à fait possible dans n'importe quel langage orienté objets. Ça ressemble plus à un grand gâteau à plusieurs étages, ou encore une lasagne (mais je préfère le gâteau).
[^] # Re: Quel ramasse-miettes ?
Posté par Sébastien Wilmet (site web personnel, Mastodon) . En réponse à la dépêche Créer un site Web local de documentation pouvant exporter en PDF avec mdBook. Évalué à 5. Dernière modification le 20 mars 2026 à 16:35.
Rust force à avoir une meilleure architecture de code, et permet d'éviter en grande partie ce que j'appelle l'« architecture spaghetti » où tout dépend de tout (« sea of objects » en anglais, mais en bon français ça sonne moins bien ;) ).
(L'expression « code spaghetti » est plus général et peut ne concerner qu'un seul fichier source / une seule classe).
Rust, en d'autres mots, force à avoir une architecture ressemblant à un arbre :
- Il y a les feuilles : fonctions et classes utilitaires ne dépendant de rien d'autres de ce module (ça peut évidemment dépendre d'autres bibliothèques).
- Puis d'autres classes dépendant des « feuilles ».
- Et ainsi de suite en remontant l'arbre, on construit des trucs au-dessus des autres.
- Pour arriver à la fonction
main()qui est le nœud tout au-dessus de l'arbre (le point d'entrée pour le programme ; pour une bibliothèque il y a plusieurs points d'entrées : les symboles exportés).(Pour rester compréhensible j'utilise le vocabulaire usuel de la POO, pas le vocabulaire spécifique à Rust).
Le truc à éviter est si une classe feuille dépend d'une classe proche de la racine. Une classe proche de la racine a potentiellement accès à tout le reste du module. Donc c'est comme ça que « tout dépend de tout » et c'est entremêlé comme des spaghetti (cuits).
Avoir une architecture de classes sous forme d'arbre, ou un DAG (directed acyclic graph) est tout à fait possible dans n'importe quel langage orienté objets. Ça ressemble plus à un grand gâteau à plusieurs étages, ou encore une lasagne (mais je préfère le gâteau).