Size: a a a

2018 December 04

DR

Dmitry Russ (Aleksandrov) in pro.elixir
cond
   isDead? -> deadAmount()
   isSeparated? -> separatedAmount()
   isRetired? -> retiredAmount()
   true -> normalPayAmount()
 end
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Пожалуйста и никаких return-ов в Elixir-е.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
И exception-ов
источник

Е

Евгений in pro.elixir
Alexey Bolshakov
вкусовщина (с) Евгений
да, я с этим согласен, я против фанатизма.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
def getPayAmount(true, _, _), do: deadAmount()
...

как вариант
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Евгений
я канешна понимаю, что здесь найдется куча народу утверждающая что первое понятнее второго, непрерывный контрол флоу и прочее 😂
Первое не есть хорошо, но для этого есть switch в императивных языках и cond в Elixir-е, и поэтому надо сравнивать не вермишель из if-ов, а то как можно прекрасно и без return-ов написать тоже самое.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но это вкусовщина
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Źmićer Rubinštejn
def getPayAmount(true, _, _), do: deadAmount()
...

как вариант
cond - уже сам по себе прекрасно справляется.
источник

ŹR

Źmićer Rubinštejn 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
Надо только иногда следить чтобы какая-нибудь функция несколько раз не выполнялась
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
cond - может быть в данном случае лучше, чем мэтчинг в функции и case-а, если что-то из этого нужно считать. (тогда можно посчитать первое и оно true, то не посчитается второе, в отличие от case-а, где вначале все посчитается.)
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Но суть в том, что рефакторинг именно на кучу ретурнов тут совсем, ну никак не нужен.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Dmitry Russ (Aleksandrov)
cond - может быть в данном случае лучше, чем мэтчинг в функции и case-а, если что-то из этого нужно считать. (тогда можно посчитать первое и оно true, то не посчитается второе, в отличие от case-а, где вначале все посчитается.)
Ну я об этом и говорю.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
return не нужен точно, с этим согласен
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Кстати, интересно,

case({foo(), bar()}) do
 {true, _} -> :ok
end

Оптимизируется чтобы не считать bar, или фиг вам?
источник

AK

Aleksandr Kuzmenko in pro.elixir
Źmićer Rubinštejn
Кстати, интересно,

case({foo(), bar()}) do
 {true, _} -> :ok
end

Оптимизируется чтобы не считать bar, или фиг вам?
Сильно сомневаюсь. Легко проверить ;)
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Źmićer Rubinštejn
Кстати, интересно,

case({foo(), bar()}) do
 {true, _} -> :ok
end

Оптимизируется чтобы не считать bar, или фиг вам?
Оно не имеет права это по семантике оптимизировать
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Если ты хочешь, чтобы в case-е bar() выполнился бы в любом случае, то его невыполнение - это баг в компиляторе.
источник