erlang - 静态分析与静态类型

标签 erlang reduce elixir dialyzer

我正在学习 Elixir,工具“dialyzer”可以让您进行静态分析 - 使用它期望的参数的类型规范和它返回的输出来注释函数定义。它是完全可选的,但如果要尽可能充分地使用它,它如何与良好的静态类型相匹配?

最佳答案

我的印象是,透析器不像静态类型那么精确,这意味着它有时不会报告错误,尽管它应该报告错误。

从好的方面来说,如果透析器出现故障,那几乎总是我的错。通常,错误通常是由于不正确的类型规范造成的。

所以,虽然我不认为透析器是像静态类型那样好的工具,但它仍然有帮助。特别是,我发现类型规范非常有用,因为它们可以充当文档。最近我换了工作,加入的项目是一个复杂的Erlang项目。由于类型规范,我很容易在代码库中找到方法。

所以我的建议是在较大的项目中使用类型规范。我们只为导出(公共(public))函数和记录编写它们,这是一个很大的帮助,而且不会占用太多时间。我通常首先让代码工作,当我对它感到满意时,添加规范,并运行透析器来验证一切正常。

关于erlang - 静态分析与静态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557620/

相关文章:

database - CouchBase 1.8 和 2.0 Erlang SDK?为什么 Erlang 被排除在外

erlang - 超出框架最大尺寸

rest - 通过REST访问Erlang业务层

java - 在使用以前的元素值对每个元素执行操作后,使用 Java 8 Stream Reduce 返回列表

PHP 显示缩小和调整大小的图像

elixir - 在 Ecto 中添加关系 (Phoenix 1.3)

string - Elixir - 如何检查一个字符串是否包含文本或者它是否是一个数字 ("453")

erlang - 如何验证 erlang 进程是否已休眠?

javascript - 从字符串中删除标点符号?

药剂错误 "erlang error: :guard_expr"