Pull to refresh
29
0
Timur Vafin @timurv

User

Send message
Вы сможете сделать при помощи `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/

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

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity