- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
def with_batched_ids(count, ids)
if ids.is_a? Array
if ids.length > 1
ids.each_slice(count) do |ids|
yield(ids)
end
else
yield(ids)
end
else
yield(ids)
end
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
def with_batched_ids(count, ids)
if ids.is_a? Array
if ids.length > 1
ids.each_slice(count) do |ids|
yield(ids)
end
else
yield(ids)
end
else
yield(ids)
end
end
Заshitное программирование и просто красивая портянка из yield - end - else. Как на ровном месте придумать целый метод.
Продолжим тем, что мусор на входе вместо ошибки даст мусор на выходе. Передал строку -- и схватил её в блок.
Обратим внимание на то, что each_slice это метод Enumerable, а вовсе не конкретного Array, так что код еще и насильно завязан на конкретную реализацию.
И наконец если array у нас имеет размер 1, то его можно спокойно слайсить: получится тот же самый array.
И наконец получать блок и елдить его глупо, ведь each_slice может отлично получить &block