大型 Python 專案通常會演變成難以維護的複雜程式碼庫。追蹤進口、層以及誰依賴誰很快就會變得一團糟。 Deply 隨時為您提供協助。它分析您的程式碼結構並強制實施架構規則,確保您的 Python 專案即使在成長時也保持乾淨、模組化且易於維護。
Python 的靈活性使得如果我們不小心的話很容易引入意大利麵條式程式碼。添加新模組、裝飾器,甚至更改類別的繼承方式可能會在大型團隊中引入微妙的依賴問題。透過自動檢查強制執行的清晰邊界有助於保持較高的程式碼品質。這種方法提高了可讀性和團隊生產力。
Deply 是一個獨立的工具:
Deply 的優點在於它超越了導入,還考慮了裝飾器、類別繼承、檔案模式等等。其基於 YAML 的配置可以更輕鬆地合併到 CI 管道中,而無需編寫新的測試檔案。
pip install deply
您將獲得最新版本,目前為 0.5.2。
在專案根目錄中建立一個 deply.yaml 檔案。至少,定義要分析的路徑、要排除的任何檔案、層和規則。下面是一個類似 Django 專案的範例片段。
deply: paths: - /path/to/your/project exclude_files: - ".*\.venv/.*" layers: - name: models collectors: - type: bool any_of: - type: class_inherits base_class: "django.db.models.Model" - type: class_inherits base_class: "django.contrib.auth.models.AbstractUser" - name: views collectors: - type: file_regex regex: ".*/views_api.py" ruleset: views: disallow_layer_dependencies: - models enforce_function_decorator_usage: - type: bool any_of: - type: bool must: - type: function_decorator_name_regex decorator_name_regex: "^HasPerm$" - type: function_decorator_name_regex decorator_name_regex: "^extend_schema$" - type: function_decorator_name_regex decorator_name_regex: "^staticmethod$"
工作原理:
配置準備就緒後,執行:
pip install deply
deply: paths: - /path/to/your/project exclude_files: - ".*\.venv/.*" layers: - name: models collectors: - type: bool any_of: - type: class_inherits base_class: "django.db.models.Model" - type: class_inherits base_class: "django.contrib.auth.models.AbstractUser" - name: views collectors: - type: file_regex regex: ".*/views_api.py" ruleset: views: disallow_layer_dependencies: - models enforce_function_decorator_usage: - type: bool any_of: - type: bool must: - type: function_decorator_name_regex decorator_name_regex: "^HasPerm$" - type: function_decorator_name_regex decorator_name_regex: "^extend_schema$" - type: function_decorator_name_regex decorator_name_regex: "^staticmethod$"
服務層中的所有類別都必須以Service結尾。
deply analyze
任務中的所有函數都必須以task_開頭。
專業提示:將多個條件與 bool 結合形成高級邏輯(must、any_of、must_not),確保您可以製定高度具體的規則。
為您的 CI 管道新增一個步驟:
service: enforce_class_naming: - type: class_name_regex class_name_regex: ".*Service$"
如果發現任何架構違規,您的管道可能會失敗。
Deply 旨在幫助您在架構違規變成耗時的重構之前捕獲它們。透過自動化這些檢查,即使在大型團隊中,您也可以保持清晰的分層設計。
請隨意測試並依照自己的需求調整配置。如果您有疑問或想法,請查看儲存庫以了解有關提交問題或貢獻的詳細資訊。快樂編碼!
以上是Deply:保持 Python 架構乾淨的詳細內容。更多資訊請關注PHP中文網其他相關文章!