Size: a a a

2020 March 08

ML

Maksim Lapshin in ErlangRus
Dmitry Russ (Aleksandrov)
Не лучше when is_number(A) andalso A > 0 использовать? Т.е.  так понятнее, что именно проверяется.
Лениво
источник

TH

Taras Halturin in ErlangRus
У нас такое кодревью не пройдет. Все, что нужно угадывать отправляется автору назад. Вне зависимости, корявый нейминг или нечитабельная логика
источник

MK

Matwey Kornilov in ErlangRus
Maksim Lapshin
Лениво
И A - 0 действительно работает как надо внутри стража?
источник

ML

Maksim Lapshin in ErlangRus
Matwey Kornilov
И A - 0 действительно работает как надо внутри стража?
да, но надо не забывать, что  это  эксепшн, а значит в некоторых местах этим нельзя пользоваться хотя бы из-за этого
источник

MK

Matwey Kornilov in ErlangRus
А, так оно таки кинет исключение?
источник

MK

Matwey Kornilov in ErlangRus
Я подумал, молча пойдёт проверять следующую сигнатуру
источник

ML

Maksim Lapshin in ErlangRus
эксепшны в гардах ловятся и не крешат программу, но есть более неприятные случаи:
1> A = undefined.
undefined
2> A - 0 > 0 orelse true.
** exception error: an error occurred when evaluating an arithmetic expression
    in operator  -/2
       called as undefined - 0
источник

ML

Maksim Lapshin in ErlangRus
3> [V || V <-  [1,2,3,4], true].
[1,2,3,4]
4> [V || V <-  [1,2,3,4], A - 0 > 0 orelse true].
[]
источник

A

Andrey in ErlangRus
А если true  orelse A-0 >0 ?
источник

ML

Maksim Lapshin in ErlangRus
2> [V || V <-  [1,2,3,4], true orelse A - 0 > 0].
[1,2,3,4]
3> [V || V <-  [1,2,3,4], true or A - 0 > 0].    
[]


or  не ленивый,  orelse  ленивый
источник

A

Andrey in ErlangRus
Это да. Но вдруг)
источник

СИ

Сергей Иванов in ErlangRus
возможно, такой угрюмый код в макрос обернуть лучше, типа expect(is_numeric(...)), чтобы понятно было что исключение будет
источник

MK

Matwey Kornilov in ErlangRus
Taras Halturin
У нас такое кодревью не пройдет. Все, что нужно угадывать отправляется автору назад. Вне зависимости, корявый нейминг или нечитабельная логика
Я вот помню как однажды написал !!x на каком-то языке типа Perl, так это у всех почему-то мозг взорвало.
источник

MK

Matwey Kornilov in ErlangRus
или C
источник

MK

Matwey Kornilov in ErlangRus
Хотя например в ядре Linux двойное отрицание используется повсюду
источник

MK

Matwey Kornilov in ErlangRus
Так что угадывание зависит не только от автора ребуса, но и от способностей читателя.
источник

TH

Taras Halturin in ErlangRus
Сложность софтра растёт и сбивает с мысли какой-нибудь смысловой кульбит в коде, когда пытаешься почитать чей-то код. Или даже свой, спустя какое-то время.
источник

MK

Matwey Kornilov in ErlangRus
А еще хороший пример на мой взгляд - это код nginx
источник

MK

Matwey Kornilov in ErlangRus
Там у авторов есть неформальный "словарик", и допустим переменная с запросом во всем коде обозначается буквой r.
источник

MK

Matwey Kornilov in ErlangRus
И если ты этот словарик не знаешь, то будешь долго вдуплять что тут происходит, потому-что 90% названий одно, двух буквенные
источник