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

    −92

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if html_content.product_id == 11 || html_content.product_id == 8 || html_content.product_id == 15 || html_content.product_id == 20 
      @terms_and_conditions = Page.find(212).contents
    else 
      @terms_and_conditions = Page.find(213).contents  
    end

    Запостил: paveldruzyak, 09 Июля 2010

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

    • хоспади какой ужас
      Ответить
    • даже не знаю как такое можно отрефакторить, всё равно получается страшно - какая-то нелепая задача тут решается
      Ответить
    • Нормально рефакторится если знать чего оно должно делать ;-)
      А вот эта проверка идентификатора продукта вобще по всему коду разбросана :-)
      Ответить
    • Только у меня одного такое чувство, что это какой-то похапе-магазинчик портировали?
      Ответить
    • хорошее название переменной для продукта. html_content.
      рефакторится где то так

      def terms_and_conditions(product)
      case product.terms_type
      when 'type1'
      Page.find(212).contents
      when 'type2'
      Page.find(213).contents
      else
      'invalid terms'
      end
      end
      <%= terms_and_conditions(product) %>
      смена логики на использование terms_type вместо id.
      Ответить
      • def terms_and_conditions
        Page.terms_and_conditions medical_details_required?
        end

        def Page.terms_and_conditions(medical_detail s_required?)
        medical_details_required? ? Page.find(212) : Page.find(213)
        end
        Ответить
        • я не в курсе бизнес логики проекта, так что можно и так. особенно если точно известно что типов всего два.
          Ответить

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