您是否过滤了Elixir中所有功能的输入?

时间:2015-02-13 00:34:02

标签: elixir

总是困扰我编写Elixir函数的一件事是我应该过滤还是normalize我的函数。这背后的原因是因为Elixir倾向于以不同的方式处理"input"'input',其中一个是位串,另一个是char列表。

过滤和规范化所有输入是否更好?或者只是让它错误地说你发送了一个char列表而不是预期的bitstring?

1 个答案:

答案 0 :(得分:3)

大多数Elixir库只处理位串(双引号)并要求您在使用库之前手动转换列表(单引号)。

但是,这完全取决于您的使用案例。例如,如果我编写一个库作为另一个erlang库的输出作为输入,那么每次使用库时都必须转换charlist是不方便的。恕我直言,这只是糟糕的API设计。尽管如此,我认为只要你没有明确需要它们,你就不应该处理这些名单。 Bitstrings是Elixir处理字符串的标准方法,无需为每个方法添加所有转换杂乱。

最后,确实存在一个问题,即错误消息可能非常神秘,而且某些内容来自库内的深层次。这是动态类型语言的一般缺点。我仍然不会明确处理这个案例,因为它不是API的一部分。