Elixir想警告我,我的@doc
注释不会被复制到光束文件中:
warning: function foo/1 is private, @doc's are always discarded for private functions
lib/hello/world.ex:12
但我更倾向于将@doc
用于我的所有功能文档,而不是在@doc
和#
之间切换。
如何告诉编译器停止向我发出警告?
答案 0 :(得分:6)
无法使编译器警告静音。
过去,人们已经询问过记录私有函数是否与ExDoc或DocTest一起使用。但是,这不可能。 PerJosé:
值得记住的是,在定义它的模块之外不存在私有函数。您无法测试私有函数,因为您无法在定义它的模块之外调用私有函数。
实际上,编译器甚至可以在编译期间完全删除私有函数。这意味着私有函数仅在查看代码时才存在,如果您需要查看代码来读取它,那么它不是文档。
出于所有目的,私有函数正是您定义的代码注释:直接或半永久性blob,直接针对开发人员。不能保证它明天会存在,这就是为什么它是私有的。
答案 1 :(得分:0)
TL; DR不可能使关于@doc的私有函数的编译器警告静音
背后的原因:
Elixir将文档和代码注释视为不同的概念。文档是您与应用程序编程接口(API)的用户之间的明确合同,无论是第三方开发人员,同事还是您将来的自己。如果模块和功能是API的一部分,则必须始终对其进行记录。
代码注释旨在使开发人员阅读代码。它们对于标记改进,留下注释(例如,为什么由于库中的错误而不得不采用变通方法)很有用,等等。它们与源代码相关联:您可以完全重写一个函数并删除所有现有的代码注释,并且该函数将继续表现相同,而无需改变其行为或文档。
由于私有函数无法从外部访问,因此Elixir将警告私有函数是否具有@doc属性,并将丢弃其内容。但是,您可以像其他任何代码段一样,将代码注释添加到私有函数中,我们建议开发人员在认为会为此类代码的读者和维护者添加相关信息的情况下添加注释。
来源:https://hexdocs.pm/elixir/writing-documentation.html#documentation-code-comments