Size: a a a

2020 January 08

AU

Alexander Uljev in pro.elixir
madeinussr
тем, кто читает/поддерживает код, думаю и матчинга с гардами (ну, может, спеки еще) достаточно
тем, кто юзает приложение нужно все равно отадавать ошибки покрасивей
Ну вот мне зачастую надо воспользоваться библиотекой буквально ради трёх операций
источник

AU

Alexander Uljev in pro.elixir
Я не хочу ее читать, а иногда и читать нечего, кроме исходников
источник

AU

Alexander Uljev in pro.elixir
В итоге выбираю то, что понятно как испольовать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В руби с этим очень хуже
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Не видел ни одной библиотеки там, в которой можно разобраться по доке
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Только stack overflow development
источник

m

madeinussr in pro.elixir
ничего не имею против хороших человеческих исключений, но вот с аргументами мне кажется это чрезмерным
когда я использую библиотеку и по ф-ции сразу непонятно что передавать, то идешь в доки, где со спеками и описаными типами становится все понятно (если доки, конечно, хорошие)
ex_doc генерирует доки, по которым легко ориентироваться
источник

m

madeinussr in pro.elixir
если доки плохие - в код
источник

m

madeinussr in pro.elixir
что-то у меня возникло ощущение, что я тут капитаню
источник

AU

Alexander Uljev in pro.elixir
Окей, а если это в середине приложения вылетело с длиннющим стэком?
источник

AU

Alexander Uljev in pro.elixir
Źmićer Rubinštejn
В руби с этим очень хуже
В Руби родные исключения идеальны. То, что остальные люди делают - это да
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Исключения помогают искать ошибки, но не писать код
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я просто беру какой-нибудь кубик для рельсы и НЕ ЗНАЮ ЧТО С НИМ ДЕЛАТЬ
источник

AU

Alexander Uljev in pro.elixir
Документация кода это другая тема
источник

VA

Vsevolod Avramov in pro.elixir
~~Если я хочу вручную останавливать или запускать какие-то GenServers внутри сериалайзера - Мне обязательно брать DynamicSerializer?~~
источник

m

madeinussr in pro.elixir
Alexander Uljev
Окей, а если это в середине приложения вылетело с длиннющим стэком?
я нипанимаю 😭
источник

АН

Алексей Новоселов in pro.elixir
Alexander Uljev
Ребят, этический вопрос. Я думаю про два способа объяснить пользователю, что он неправильно использует мой код:
1. Поставить условие в заголовок функции. Если пользователь предает неправильный аргумент, то не выполняется ни одно условие и Эликсир скажет пользователю, что такой функции нет. Так можно писать код очень быстро, да и опытный человек быстро сообразит, что надо читать документацию. Плюс приучаем читать документацию.
2. Не ставить условий, брать любой аргумент и проверять его тип, а если не тот, то выдавать исключение. Так получается много дополнительных строк кода, но можно писать супер понятные исключения, что в Эликсире как капля воды в пустыне, плюс скорость в поиске ошибок.
А как это делаете вы?
Тут имхо от назначения функции все же зависит. Если апи внешний - лучше добавить обработку ожидаемых исключений и возврат красивой ошибки. Если апи внутренний - то ожидаемых исключений быть не должнои обработка ошибок это dead code
источник

AU

Alexander Uljev in pro.elixir
Конечно, речь о внешнем
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Vsevolod Avramov
~~Если я хочу вручную останавливать или запускать какие-то GenServers внутри сериалайзера - Мне обязательно брать DynamicSerializer?~~
не обязателльно
источник

VA

Vsevolod Avramov in pro.elixir
Źmićer Rubinštejn
не обязателльно
Я про супервизоры тьфу
источник