Elixir 是否有一个在空“中嵌套模块的约定?”;“家长”;模块?

Elixir 是否有一个在空“中嵌套模块的约定?”;“家长”;模块?,elixir,Elixir,假设我在一个应用程序中创建多个助手模块: defmodule MyApp.Helpers.Uri do @moduledoc”“” 字符串帮助程序的集合。 """ 结束 defmodule MyApp.Helpers.Crypto do @moduledoc”“” 加密助手的集合。 """ 结束 创建一个空的“父”模块是一种好的做法吗 defmodule MyApp.Helpers做什么 @moduledoc”“” 收集所有我的应用程序助手。 """ 结束 我想不会,因为从我阅读的所有代码来

假设我在一个应用程序中创建多个助手模块:

defmodule MyApp.Helpers.Uri do
@moduledoc”“”
字符串帮助程序的集合。
"""
结束
defmodule MyApp.Helpers.Crypto do
@moduledoc”“”
加密助手的集合。
"""
结束
创建一个空的“父”模块是一种好的做法吗

defmodule MyApp.Helpers做什么
@moduledoc”“”
收集所有我的应用程序助手。
"""
结束

我想不会,因为从我阅读的所有代码来看,在模块名称的最后部分使用复数似乎是一种错误的做法。但是我想确定。

正如@7stud评论的那样,在名称空间中使用点仅仅是一种普遍接受的约定,甚至在名称空间中也使用。这样做只是为了方便地防止名称冲突(路径匹配名称加强了这一点)

因此,在中间模块中添加一个空模块似乎没有必要

正如@brett-beatty评论的那样,关于在模块名称后面使用复数的问题,似乎没有任何常规做法反对这一点。如果我们遵循最流行的规则,那么唯一的惯例将是


注意:我收集了这些评论来结束这个问题。

复数模块名没有错,但是没有太多理由定义空模块。但是,有时您会看到父模块用作API边界。模块
MyApp.Helpers
与模块
MyApp.Helpers.URI
没有任何关系。换句话说,模块名称中的点对elixir来说(几乎)毫无意义。参见以“长生不老药是”开头的一行。带点的模块名称只是一种特殊的名称空间约定,以防止名称与其他模块名称冲突。谢谢@7stud:)