如何在单体代码库中正确命名服务文件和文件夹?
How to properly name service files and folders in a monolith codebase?
我想听听您对在代码库中命名文件和文件夹的想法。
假设我们在付款范围内定义了不同的供应商服务(paypalService、stripeService 等)和退款服务。
考虑支付目录中的以下结构:
monolith
|
└--payment
│ __init__.py
│ views.py
│ tasks.py
└───services
│ │ __init__.py
│ └───refund
│ │ __init__.py
│ │ main.py
│ │ utils.py
│ └───vendors
│ │ __init__.py
│ └─── stripe
│ │ __init__.py
│ │ main.py
│ │ utils.py
│ └─── paypal
│ │ __init__.py
│ │ main.py
│ │ utils.py
│ └─── adyen
│ │ __init__.py
│ │ main.py
│ │ utils.py
在这种结构中,文件名本身并不代表任何东西(例如main.py
),但是当我们查看全名时,包括文件夹,例如(monolith/payment/services/refund/main.py
) 这个 main.py 名称 确实 给出了给定模块包含它所在的任何服务目录的主要部分的想法。同样的想法适用于所有文件:每个模块的完整路径清楚地描述了模块的内容。
有些人声称 __init__.py
是放置主模块 class 的合适位置,但我对此进行了研究,但找不到这样的用例。 __init__.py
的 AFAIK 可能用例是定义目录如何作为一个包提供给外界,例如在这个文件中定义 __all__
对我来说很有意义。
我想出了这个想法(init、main、utils 三重奏)来构建服务目录,我想听听你的想法。所有具有相似名称(如 main、utils)的文件都让我有点发痒。这是一种不好的做法吗?构建此类服务目录的替代方法有哪些?
假设:
- 让我们假设每个模块都应该有自己特定的实用程序。
- 服务模块足够大,可以为它们创建一个包并将它们拆分为 "utils"、"mixins"、"main" 等模块
任何阅读有关此问题的最佳实践的来源也将不胜感激!
问题中提供的结构对我来说很好。这是绝对清楚的。
有很多名称相似的文件不是问题(你好,Django!每个包都有 __init__.py
、models.py
、admin.py
、tests.py
、templatetags.py
(或同名包)。
对于像解决方案这样的框架来说,有很多类似的命名文件是绝对正常的,它允许您创建某种 "pluggable system" 以备不时之需。
现代编辑器可以很好地处理不同目录中的同名文件,方法是在案例的父目录名称中添加 prefixes/postfixes。我最喜欢的 IDE PyCharm 有一个很酷的插件 Tabdir plugin。
我喜欢你的结构。任何现代框架都试图标准化 "applications or plugins folders",这很正常。那是真正的编程,而不是编写大量难看的文件并导入它:)
我想听听您对在代码库中命名文件和文件夹的想法。 假设我们在付款范围内定义了不同的供应商服务(paypalService、stripeService 等)和退款服务。 考虑支付目录中的以下结构:
monolith
|
└--payment
│ __init__.py
│ views.py
│ tasks.py
└───services
│ │ __init__.py
│ └───refund
│ │ __init__.py
│ │ main.py
│ │ utils.py
│ └───vendors
│ │ __init__.py
│ └─── stripe
│ │ __init__.py
│ │ main.py
│ │ utils.py
│ └─── paypal
│ │ __init__.py
│ │ main.py
│ │ utils.py
│ └─── adyen
│ │ __init__.py
│ │ main.py
│ │ utils.py
在这种结构中,文件名本身并不代表任何东西(例如main.py
),但是当我们查看全名时,包括文件夹,例如(monolith/payment/services/refund/main.py
) 这个 main.py 名称 确实 给出了给定模块包含它所在的任何服务目录的主要部分的想法。同样的想法适用于所有文件:每个模块的完整路径清楚地描述了模块的内容。
有些人声称 __init__.py
是放置主模块 class 的合适位置,但我对此进行了研究,但找不到这样的用例。 __init__.py
的 AFAIK 可能用例是定义目录如何作为一个包提供给外界,例如在这个文件中定义 __all__
对我来说很有意义。
我想出了这个想法(init、main、utils 三重奏)来构建服务目录,我想听听你的想法。所有具有相似名称(如 main、utils)的文件都让我有点发痒。这是一种不好的做法吗?构建此类服务目录的替代方法有哪些?
假设:
- 让我们假设每个模块都应该有自己特定的实用程序。
- 服务模块足够大,可以为它们创建一个包并将它们拆分为 "utils"、"mixins"、"main" 等模块
任何阅读有关此问题的最佳实践的来源也将不胜感激!
问题中提供的结构对我来说很好。这是绝对清楚的。
有很多名称相似的文件不是问题(你好,Django!每个包都有 __init__.py
、models.py
、admin.py
、tests.py
、templatetags.py
(或同名包)。
对于像解决方案这样的框架来说,有很多类似的命名文件是绝对正常的,它允许您创建某种 "pluggable system" 以备不时之需。
现代编辑器可以很好地处理不同目录中的同名文件,方法是在案例的父目录名称中添加 prefixes/postfixes。我最喜欢的 IDE PyCharm 有一个很酷的插件 Tabdir plugin。
我喜欢你的结构。任何现代框架都试图标准化 "applications or plugins folders",这很正常。那是真正的编程,而不是编写大量难看的文件并导入它:)