Bonjour,Comment organiser correctement un arbre de dépendance de module/module?
J'écris actuellement une librairie python. À l'heure actuelle, les modules et les classes sont déployés de manière non organisée, sans conception raisonnée. À l'approche d'une version plus officielle, je voudrais réorganiser les classes et les modules afin qu'ils aient un meilleur design global. J'ai dessiné un diagramme des dépendances d'importation, et je prévoyais d'agréger les classes par niveau de couche. En outre, je considérais une modification des classes afin de réduire ces dépendances.
Quelle est votre stratégie pour une bonne conception globale d'une bibliothèque python potentiellement complexe et en cours de création? Avez-vous des suggestions intéressantes?
Merci
Mise à jour:
Je cherchais en effet une règle générale. Par exemple, supposons que ce cas se produit (initialisation py pour plus de clarté)
foo/bar/a.py
foo/bar/b.py
foo/hello/c.py
foo/hello/d.py
maintenant, si vous arrive d'avoir d.py importer bar.b et a.py hello.c importation, je considère c'est un mauvais réglage. Un autre cas serait
foo/bar/a.py
foo/bar/baz/b.py
foo/bar/baz/c.py
supposons que a.py et b.py importent c. vous avez trois solutions: 1) b importe c, une importation baz.c 2) vous déplacez c dans foo/bar. a.py importe c, b.py importe .c 3) vous déplacez c ailleurs (disons foo/cpackage/c.py) et ensuite a et b import cpackage.c
J'ai tendance à préférer 3) , mais si c.py n'a pas de signification en tant que module autonome, par exemple parce que vous voulez le garder "privé" dans le paquet de barre, je préférerais 1).
Il existe de nombreux autres cas similaires. Ma règle de base est de réduire au minimum le nombre de dépendances et de passages, afin d'éviter une configuration fortement ramifiée et fortement imbriquée, mais je peux me tromper.
Avec les couches, j'entends organiser mes paquets de sorte que leurs classes/modules dépendent soit de ce paquet, soit d'un autre qui contient des services "inférieurs". Je considérerais chaque paquet comme une "bibliothèque indépendante", dépendant éventuellement d'autres paquets, afin de ne pas avoir de dépendances circulaires. –