LL
ets.ex файл2)
Application в файле agala.ex3)
mnesia.ex не закончен4)
Agala.Bot.Config:10 лучше Map.new()5) Вообще эти unless в
Agala.Bot.Config, я бы вынес в отдельный макрос, потому что глаза режет просто6) В том же модуле, если и
inspect, то с pretty: true7)
Agala.Bot.Supervisor в конфига странно мерджится, а потом ешё и в мапу8) Переименовать
chain_builder.ex в builder.ex9) В
Agala.Chain.Builder.__using__ лучше использовать unquote(__MODULE__)10) В том же файле на 81 злодейский
reduce в одну строку11) В том же файле в
init_chain странный код. Можно было бы без сигила и без Atom.to_charlist12) В том же файле. Одинаковые функции пишутся без строки между ними
13) В том же файле
error_message очень жутко строится. Я бы вынес в какой-нибудь defp make_error_message/114) В том же файле на 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_keys20) В
Agala.Conn функции fetch, get, get_and_update нужно заинлайнить или defdelegate22) В
Agala.Conn.send_to функция ничего не отсылает, лучше переименовать в put_responser23) Зачем
put_private, если он private ?24) Не уважаю однострочные пайпы в
Agala.Conn25) Для
Agala.BotParams смотри пункт 20. Вынес бы в макрос26) В
Agala.Util вместо filter |> map я бы использовал forА так, общая архитектура меня устроила, но по-моему, слишком много
use. Я понимаю что сделано по аналогии с плагом, но я не сторонник такого

