Руководство по написанию спецификаций в Erlang

В проектах с открытым исходным кодом я вижу следующие два способа написания спецификаций:

Особенности комментариев

@spec start_link() -> {ok, pid()}

Характеристики исходного кода

-spec start_link() -> {ok, pid()}

Какая разница? Один из них предпочтительнее другого?

Ответ 1

Версия комментария (@spec) предшествует версии исходного кода (-spec). Последнее предпочтительнее.

согласно Документация EDoc:

Примечание. Хотя синтаксис, описанный ниже, все еще может быть использован для указания функций мы рекомендуем, чтобы спецификации Erlang как описанные в Типы и спецификация функций, следует добавить в исходный код. Таким образом, анализ Dialyzer может быть используемых в процессе согласования документации и своевременно. Спецификации Erlang будут использоваться, если (тег @spec, за которым следует тип) с тем же имя.