Как стать автором
Обновить
29
0
Timur Vafin @timurv

Пользователь

Вы сможете сделать при помощи `Redirect` «умное» перенаправление типа example.com/some-url на www.example.com/some-url?
Допустим, есть модуль, скачивающий страницы с некоторого сайта и распарсивающий их.


Так плохо делать, модуль/класс должен делать что то одно. В вашем примере должно быть два класса.

1) Узнать информацию о поставщике;
2) Узнать информацию о лотах закупки;
3) Узнать информацию о аукционе закупки;
4) Узнать информацию о протоколах закупки;
5) Узнать информацию о последней дате изменения состояния закупки.


В вашем примере имеет смысл сделать разные классы для все 1-5 случаев скачивания и парсинга с одинаковым интерфейсом, и используя полиморфизм их вызывать в цикле.

Таким образом вы сделаете главный класс, который оперирует подклассами удовлетворающим Open/Closed principle.
Так же было бы хорошо сделать, чтобы подклассы были слабо связаны друг с другом, т.е. их можно было бы использовать и тестировать независимо.

Как то так с ошибками

class CalculateSomeShit
  ACTIONS = %i(
    SomeShit1
    SomeShit2
    SomeShit3
    SomeShit4
    SomeShit5
  )

  class SomeShit1
    def initialize(context)
      @context = context
    end

    def call
      @context[:shit1] = calculate(fetch)      
    end

    private

    def fetch
    end

    def calculate
    end
  end

  class SomeShit2
    def initialize(context)
      @context = context
    end

    def call
      @context[:shit2] = calculate(fetch(@context[:shit1]))      
    end

    private

    def fetch
    end

    def calculate
    end
  end  

  def call
    {}.tap do |context|
      ACTIONS.each do |action|
        context = action.new(context).call
      end      
    end
  end
end
Предлагается использовать полиморфизм, чтобы избавиться от сложных условий.

Conditional code clutters methods, makes extraction and reuse harder, and can lead to leaky concerns. Object-oriented languages like Ruby allow developers to avoid conditionals using polymorphism. Rather than using if/else or case/when to create a conditional path for each possible situation, you can implement a method differently in different classes, adding (or reusing) a class for each situation.
— Ruby Science
> Работать в openspace нельзя.
Как же Google, Yandex?
Несколько сумбурно показалось, но все равно здорово читать статьи, основанные на практике.
Спасибо.
Легко ошибиться:
— MB — мегабайт
— Mbit — мегабит

на первых порах не успеваем организовать запись, в следующий раз обязательно!
— Не думай.
— Если думаешь – не говори.
— Если думаешь и говоришь – не записывай.
— Если думаешь, говоришь и записываешь – не подписывай.
— Если думаешь, говоришь, записываешь, подписываешь – не удивляйся.
А для чего привязка к модели User?
Я к сожалению не могу по вашему комменту сказать, что вы делаете не так.

В бестбай?
Как раз ищется инструмент, чтобы просматривать коммиты, комментировать коммиты построчно, ставить подпись.
Он действительно на столько хорош, что можно его купить и потратить время на интеграцию с git?
Из коробки на сколько я понял, он имеет только консольный клиент, работающий с git.
Занимаюсь темой code review тоже, ищу инструменты для автоматизации.

Пока на выбор:
* howsmycode.com/
* www.reviewboard.org/

Было бы здорово, если бы кто нибудь посоветовал работающую схему.
Вам говорили, что у вас изощренное чувство юмора? )
А я ее всегда называл задачкой Вербера ;)
Знакомый таксист будет лишним, когда вы захотите провести рамантический вечер со своей девушкой за городом ;)
Я не стал бы считать мелкой утилиткой приложение, над которым работает такое количество разработчиков.

Информация

В рейтинге
Не участвует
Откуда
Казань, Татарстан, Россия
Дата рождения
Зарегистрирован
Активность