LL
Все пишут языки, упрощают свою жизнь, увеличивая количество вещей, которые нужно выучить
Size: a a a
LL
AB
LL
phoenix. Вот какие макросы там сложные? Ну вот какой потратил на понимание больше 10 секунд? Роутер?Ecto.Query. Да, там есть свои тонкости, но это нормальный подход со встроенным экранированием, унификацией mysql и postgresql запросов, не макросы а чистые данныеEcto.Schema вообще не требует никакой умственной нагрузки. Писать вместоschema "mytable" do
field :name, :string, size: 10
field :password, :string
end
@schema [Не сильно лучше и вообще никак не упрощает понимание
{:name, :string, [size: 10]},
{:password, :string, []}
]
Ecto.create_schema("mytable", @schema)
LL
Elixir вспоминают Ecto.Query или какие-нибудь вообще странные и непонятные перегруженные вещи, но совсем не вспоминают об alias, import или use, без которых они до сих пор копипастят 4 коллбека в генсервере вместо лаконичного use GenServerAB
AB
E.S.__using__. зачем в коде глобальные переменные?..LL
E.S.__using__. зачем в коде глобальные переменные?..__before_compile__, наверное, чтобы постфактум нагенерить структуру и функцийAB
__before_compile__, наверное, чтобы постфактум нагенерить структуру и функцийLL
__using__
Во втором случае ты смотришь в функцию, которая генерит схемуLL
Ecto.Schema.schemaschema делаетAB
LL
defoverridable handle_cast: 2 и потом заимплементить свой и внутри вызвать super()AB
__using__
Во втором случае ты смотришь в функцию, которая генерит схемуAB
AB
defoverridable handle_cast: 2 и потом заимплементить свой и внутри вызвать super()DS
AB
LL
AB
LL