Hello,
Ta structure actuelle semble déjà bien pensée en termes de séparation des responsabilités, mais elle pourrait être simplifiée ou améliorée en fonction de plusieurs critères.
En ce qui concerne la compréhension de la logique des dossiers et des fichiers, cette séparation semble pertinente, car elle t’évite d’avoir un fichier helpers.py énorme. Cependant, est-ce que les frontières entre extract et transform sont toujours claires ?
Y a-t-il des fonctions qui pourraient être utilisées dans les deux et qui nécessitent d’être dupliquées ou mal placées ?
Tu dis que main_extract.py gère l’extraction et appelle des fonctions spécifiques dans utils_extract, cela semble assez logique.
Est-ce que les fichiers dans utils_extract contiennent des fonctions vraiment indépendantes ? Ou bien certaines d’entre elles sont-elles très spécifiques à un type d’extraction précis ?
Si tu vois que ces fonctions sont trop spécifiques, peut-être que utils_extract pourrait être renommé en extract_methods pour être plus explicite.
Le fichier main_transfo.py gère l’ensemble des manipulations. Mais est-il simplement un point d’entrée ou contient-il aussi de la logique métier importante ?
Le fichier helpers.py sert d’intermédiaire entre main_transfo et les 4 fichiers de transformation. Est-ce nécessaire ?
Si helpers.py ne fait que router des appels, tu pourrais peut-être simplifier en faisant directement appeler main_transfo les fichiers de transformation.
Si helpers.py ajoute une logique supplémentaire (validation, prétraitement, sélection dynamique des fonctions à appeler), alors il a du sens.
L’évolutivité des types de transformation. Si demain tu veux passer de 4 types de transformation à 6 ou revenir à 3, il faut que ce soit simple :
- Est-ce que helpers.py contient une logique conditionnelle compliquée pour choisir le bon fichier ?
- Si oui, tu pourrais envisager une approche où les fichiers de transformation s’enregistrent dynamiquement au lieu d’être appelés explicitement.
On pourrait proposer une amélioration
Plutôt que d’avoir un fichier helpers.py intermédiaire, tu pourrais :
- Créer une classe TransformationManager qui détecte et charge dynamiquement les transformations selon un critère défini.
- Utiliser un pattern plugin où chaque fichier de transformation s’enregistre comme un module disponible.
En conclusion
Ta structure actuelle est fonctionnelle, mais la complexité dans transform vient du fait que tu anticipes une évolution du nombre de types de transformation.
Si helpers.py n’est qu’un simple relais, tu peux le supprimer.
Si la gestion du nombre de types de transformation est un vrai sujet, un système dynamique (classe, mapping de modules) pourrait t’aider à évoluer plus facilement sans tout casser.
Partager