Реализация ScrumJet on GitHub (на момент написания настоящего документа) разделяет по существу идентичные функции между модулями хранения для задач, категорий и плат. Это было достигнуто путем перемещения идентичного кода, который сильно использует макрос ?MODULE
в scrumjet_datastore.hrl
. Каждый из scrumjet_task.erl
, scrumjet_category.erl
и scrumjet_board.erl
включает scrumjet_datastore.hrl
и не имеет функций, определенных локально.Как вы отлаживаете функции из включений в Erlang?
Это очень хорошо работает, когда нет ничего плохого. Однако, если мне нужно отлаживать, тогда отладчик выводит пустой модуль вместо файла заголовка, где определены функции.
Кто-нибудь знает, как заставить работать отладчик Erlang для функций в составе?
Самое простое, что вы просто скопируете код из файла заголовка в исходники модуля и перекомпилируете. – Zed
На мой взгляд, scrumjet_datastore должен быть модулем erlang, каждая функция принимает имя таблицы в качестве дополнительного аргумента. Вместо того, чтобы звонить в эти «пустые» модули, вызовы могут быть сделаны в scrumjet_datastore с переданным также именем таблицы ... – Zed
Я согласен с Zed, если вы не знаете какой-то конкретной причины для необходимости и .hrl-файла и макросов, идите с нормальные модули и параметры, насколько это возможно. Это упрощает многое. Пока не беспокойтесь о производительности или инкрустации. –