Typespecs 中括号的使用是可选的吗?

Are the usage of parentheses in Typespecs optional?

看过之后

  1. https://hexdocs.pm/elixir/typespecs.html
  2. http://elixir-lang.org/getting-started/typespecs-and-behaviours.html

看起来下面都是一样的,这只是代码样式偏好吗?

@type someCustomType() :: String.t()
@type someCustomType() :: String.t
@type someCustomType :: String.t()
@type someCustomType :: String.t

是的。

尽管留下一个词的答案很诱人,但我觉得我需要多说一点以避免投反对票。请注意,hexdocs 可能更好地代表了国家的状况,并且入门页面不会经常更新为标准。所以我希望首选是对类型使用括号。因此,第一个选项是你最好的选择,最后一个是你的第二个选项,我希望大多数人不会刻意选择中间两个。一致性真是太好了。

是的,在类型规范(或任何 zero-arity 函数)中使用圆括号是一种样式偏好:解析器将知道如何解释带或不带圆括号的函数,但有时可读性会因圆括号而提高,有时没有。 mix format 的文档包含一些有关如何应用和自定义格式的说明(如果您使用该工具)。将 mix format 作为代码提交和验证检查的一部分,确实有助于实现一致的格式设置并减少代码差异中的格式噪音。

本次讨论中的另一个相关工具是 credo 包:它有助于保持代码格式的一致性,并且您可以通过查看其配置文件了解很多有关评估的不同内容 .credo.exs。我认为与你的问题相关的是 Credo.Check.Readability.ParenthesesOnZeroArityDefs 选项。