Size: a a a

2020 September 23

AK

Aleksey Kluchnikov in ErlangRus
коментарий смысл еще доводит, который не меняется обычно
источник

AK

Aleksey Kluchnikov in ErlangRus
может просто не стоит в коментарии значения переменных прописывать
источник

ИИ

Иванов Иванов... in ErlangRus
Спеки помогают изучать чужой код. А диалайзер помогает искать ошибки. Имхо экономить на программировании тестировании и документировании это самое тупое что можно придумать в программировании тестировании и документировнии
источник

ИИ

Иванов Иванов... in ErlangRus
А вот пресловутый "говнокод" мне не доводилось видеть чтобы мешал работать. В любом коде разбираться приходится
источник

AK

Aleksey Kluchnikov in ErlangRus
resolveip(Hostname) when is_binary(Hostname) ->
 case dns_request(Hostname, _Opts = []) of
   {ok, Ip}  -> Ip;
   not_found -> not_found;
   {err, {Code, Desc}} -> {err, {Code, Desc}}
 end.
источник

AK

Aleksey Kluchnikov in ErlangRus
вот функция, чем тут поможет спека?
источник

AK

Aleksey Kluchnikov in ErlangRus
тут еще профит что не надо лезть в функцию dns_request чтобы узнать что он возвращает
источник

PK

Petr Kozorezov in ErlangRus
Aleksey Kluchnikov
вот функция, чем тут поможет спека?
какие могут быть коды ошибок? какой какой ip возвращается v4, v6 или оба? какого тапа Desc строка, бинарь, atom или term?
источник

AK

Aleksey Kluchnikov in ErlangRus
тащишь важное по смыслу как можно выше в дереве функций и получаешь хорошо читаемый код
источник

AK

Aleksey Kluchnikov in ErlangRus
так закейси
источник

AK

Aleksey Kluchnikov in ErlangRus
если ожидаешь оттуда ipv6, тут же и писать {ok_ipv6, Ipv6}
источник

AN

Alexey Novoselov in ErlangRus
да спеки, имхо, в обязательном порядке нужно для внешних апи делать, когда не понятно, что прилететь может.

История из жизни про диалайзер: Как-то вылезла ошибка вообще невнятная ":0:unknown_type" все. При том CD/CI был настроен так, что с ошибками в мастер не смержиться. Искал, искал, пару дней убил, коллеги тоже искали искали, никто не смог найти в чем косяк. Решили добавить ошибку в .dialyzer.ignore и смержиться в мастер. И что вы думаете? Через полтоора месяца от фронтов приходит бага: на такой-то запрос сервер пятисотит (500 err). Начал разбираться, нашел в конце концов косяк, поправил и вуаля! Ошибка диалайзера ушла. При том бага была в неудачной стечении обстоятельств и внешней либе, которая такое пропускала, хотя 100% не должна была. В следующей мажорной версии либу (Absinthe) переписали и такой код вообще перестал копмилироваться.
В эликсире, а точнее фениксе/экто/абсенте/etc, которые все на макросах, вообще без диалайзера тяжело стает через 10к строк кода. Да и спеки помогают делать код амодокументируемым без комментов в 3 раза больше тела функции.
источник

AK

Aleksey Kluchnikov in ErlangRus
тоесть пока не крешнулось не нашли и диалайзер не помог
источник

AK

Aleksey Kluchnikov in ErlangRus
помогли бы тесты, но их еще тоже писать надо
источник

AK

Aleksey Kluchnikov in ErlangRus
так это графкюэл. где клиенты могут как угодно запросы делать?
источник

AN

Alexey Novoselov in ErlangRus
Aleksey Kluchnikov
тоесть пока не крешнулось не нашли и диалайзер не помог
да, гкл. если бы диалайзер чуть повнятнее ошибку дал, то нашли бы. Просто в Absinthe самой внутри спеков мало было тогда
источник

AK

Aleksey Kluchnikov in ErlangRus
вот еще одно если. общая кривость диалайзера. Был бы он крут прост и надежен..
источник

AN

Alexey Novoselov in ErlangRus
но все равно он чеще помогает, чем мешает, кмк
источник

V

Vasilii Demidenok in ErlangRus
так можно договориться и до того что тесты не нужны, ибо 100% покрытие кода не спасает :D
источник

AK

Aleksey Kluchnikov in ErlangRus
Alexey Novoselov
но все равно он чеще помогает, чем мешает, кмк
Наверно это самое правильное определение, чаще помогает чем мешает
источник