我目前正在寫一個python庫。目前,模塊和類以無組織的方式部署,沒有合理的設計。當我接近更正式的版本時,我想重新組織類和模塊,以便它們具有更好的總體設計。我繪製了一個導入依賴關係圖,並且我計劃按層級聚合類。另外,我正在考慮對類進行一些修改,以減少這些依賴關係。
對於一個潛在的複雜和潛在的Python庫的良好整體設計,你有什麼策略?你有沒有有趣的建議?
感謝
更新:
我確實是在尋找一個經驗法則。例如,假設這種情況發生(初始化的.py爲了清楚起見移除)
foo/bar/a.py
foo/bar/b.py
foo/hello/c.py
foo/hello/d.py
現在,如果你碰巧有d.py進口bar.b和a.py進口的hello.c,我會考慮這是一個糟糕的設置。另一種情況是
foo/bar/a.py
foo/bar/baz/b.py
foo/bar/baz/c.py
假設a.py和b.py都導入c。你有三種解決方案:1)b進口c,a進口baz.c 2)你在foo/bar中移動c。 a.py進口c,b.py進口.c 3)你把c移到別的地方(比如foo/cpackage/c.py),然後a和b都輸入cpackage.c
我傾向於選擇3) ,但是如果c.py作爲一個獨立的模塊沒有意義,例如,因爲你想把它保留在bar包中,那麼我會優先考慮1)。
還有很多其他類似的情況。我的經驗法則是至少減少依賴和交叉的數量,以防止高度分支,高度交錯的設置,但我可能是錯的。
對於層,我的意思是組織我的軟件包,以便它們的類/模塊依賴於該軟件包的內容或另一個包含「較低」服務的軟件包。我會將每個軟件包視爲一個「獨立庫」,最終依賴於其他軟件包,因此不會產生循環依賴。 – 2009-02-09 13:18:48