1. Ruby / Говнокод #23398

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 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

    Заshitное программирование и просто красивая портянка из yield - end - else. Как на ровном месте придумать целый метод.

    Запостил: strax, 10 Октября 2017

    Комментарии (1) RSS

    • Начнем с того, что проверять тип -- тупо. Если ты взял язык без стат типизации, то просто напиши в комментарии, что тебе будут передавать. Иначе можно засрать код ненужными проверками.

      Продолжим тем, что мусор на входе вместо ошибки даст мусор на выходе. Передал строку -- и схватил её в блок.

      Обратим внимание на то, что each_slice это метод Enumerable, а вовсе не конкретного Array, так что код еще и насильно завязан на конкретную реализацию.

      И наконец если array у нас имеет размер 1, то его можно спокойно слайсить: получится тот же самый array.

      И наконец получать блок и елдить его глупо, ведь each_slice может отлично получить &block
      Ответить

    Добавить комментарий