LL
ets.ex
файл2)
Application
в файле agala.ex3)
mnesia.ex
не закончен4)
Agala.Bot.Config:10
лучше Map.new()
5) Вообще эти unless в
Agala.Bot.Config
, я бы вынес в отдельный макрос, потому что глаза режет просто6) В том же модуле, если и
inspect
, то с pretty: true
7)
Agala.Bot.Supervisor
в конфига странно мерджится, а потом ешё и в мапу8) Переименовать
chain_builder.ex
в builder.ex
9) В
Agala.Chain.Builder.__using__
лучше использовать unquote(__MODULE__)
10) В том же файле на 81 злодейский
reduce
в одну строку11) В том же файле в
init_chain
странный код. Можно было бы без сигила и без Atom.to_charlist
12) В том же файле. Одинаковые функции пишутся без строки между ними
13) В том же файле
error_message
очень жутко строится. Я бы вынес в какой-нибудь defp make_error_message/1
14) В том же файле на 135
++
, когда можно было бы |
15) В том же файле в
compile_guards/2
можно было бы простоif(unquote(guards), do: unquote(call), else: conn)
16) Почему
chain
, если это просто plug
с логгингом на холте17) В папке
conn
один файл18) В папке
provider
один файл19) Неправильный тип
Agala.Conn.t()
, некоторые поля могут быть nil
. Иначе нужен @enforce_keys
20) В
Agala.Conn
функции fetch
, get
, get_and_update
нужно заинлайнить или defdelegate
22) В
Agala.Conn.send_to
функция ничего не отсылает, лучше переименовать в put_responser
23) Зачем
put_private
, если он private
?24) Не уважаю однострочные пайпы в
Agala.Conn
25) Для
Agala.BotParams
смотри пункт 20. Вынес бы в макрос26) В
Agala.Util
вместо filter |> map
я бы использовал for
А так, общая архитектура меня устроила, но по-моему, слишком много
use
. Я понимаю что сделано по аналогии с плагом, но я не сторонник такого