Яuбy / Говнокод #4913 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
def non_blank_attrs_amount
    return_value = 4
    return_value = return_value + 1 if (!country.blank?)
    return_value = return_value + 1 if (!address.blank?)
    return_value = return_value + 1 if (!phone.blank?)
    return_value = return_value + 1 if (!email.blank?)
    return_value = return_value + 1 if (!skype.blank?)
    return_value = return_value + 1 if (!site.blank?)
    return_value = return_value + 1 if (!comment.blank?)
    return_value.to_s
  end

Запостил: Dreamfall Dreamfall, (Updated )

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

  • На сколько я понял это штука применяется для валидации.
    Не считая того, что в Ruby on Rails имеется куча своих гибких валидаторов, этот код можно было в любом случае сильно упростить (хотя лучше убрать с глаз долой) 🙂

    И да, в руби ++ нет, зато есть += 🙂
    Ответить
    • А в Паскале и += не нужно:
      return_value := 4 + ord(not country.blank) + ord(not address.blank) + ord(not phone.blank) + ord(not email.blank) + ord(not skype.blank) + ord(not site.blank) + ord(not comment.blank);

      Кстати, в руби можно данный пример реализовать циклом?
      Ответить
      • В теории, если немного постараться, то да.
        Но дело в том, что это настолько сферический говнокод в вакууме, что нет смысла его нормальной реализации 🙂 я не знаю, зачем он нужен был пердыдущему кодеру 🙂

        Это одни из полей модели. Если их где-то объявить как массив в классе, то потом можно спокойно по нему итерироваться. типа
        def non_blank_attrs_amount
            rv = 4
            our_attributes_array.each do |a|
              rv += 1 if self.try(a).blank?
            rv
          end

        Причем "try(a)" это наверное кривой способ. У меня слишком маленький опыт разработки на руби, чтобы быть уверенным в моем коде 🙂
        Ответить
  • # абстрактно в вакууме
    def non_blank_attrs_amount
    always_non_blank_attributes_quantity = 4
    %w{country address phone email skype site comment}.count{|attribute_name| self.send(attribute_name).present?} + always_non_blank_attributes_quantity
    end

    # для active record
    def non_blank_attrs_amount
    self.attributes.values.count(&:present?)
    end
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8