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

    −131.4

    1. 1
    some_variable = (some_condition && some_other_condition) ? true : false

    Иногда встречаю ГК подобный этому но реализованный в виде case..when. Еще более впечатляет :)

    Запостил: shine, 15 Января 2010

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

    • Так, давайте один раз представим этот говнокод в разных языках и больше его не будем постить. Можно даже название ему придумать.
      Ответить
      • Давайте. Можно добавить соответствующий раздел на сайте и вносить туда классику ГК.
        Ответить
      • + !!
        Ответить
    • Давно этому пора название придумать.
      Кстати, в реальных проектах встречается довольно часто :)

      [C#]
      bool some_variable = (some_condition && some_other_condition) ? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false? true : false;
      [/C#]
      Ответить
    • Походу тернарный оператор - зло.
      Ответить
      • У меня часто используется, когда аргумент функции может быть дефолтным

        OBJECT* CreateObject(unsigned size)
        {
        /* ... */
        this->m_size = (size == DEFAULT)? DEFAULT_SIZE: size;
        /* ... */
        }

        И ещё много где. Небесполезен, как goto, если использовать с умом.
        Ответить
        • Да тут кагбэ не о пользе тернарного оператора в целом речь...
          Ответить
    • подскажите говно-новичку как правильно избегать таких ситуаций (

      я так делаю
      if (condition) some_variable=true

      или не так надо) спасибо)
      Ответить
      • не понятно как эта some_variable в дальнейшем используется
        но есть подозрение что не так надо
        Ответить
      • В данном случае следовало написать[ruby]some_variable = (some_condition && some_other_condition)[/ruby]
        Ответить
    • "some_variable = some_condition && some_other_condition"
      Если не важен собственно тип some_variable.
      Если нужен именно boolean, делается cast. (в python'е "some_variable = bool(some_condition and some_other_condition)", в ruby (который я не знаю) вроде можно "some_variable = !!(some_condition && some_other_condition)" (тоже довольно говнисто, надо смотреть в сторону каста, но дальше TrueClass/FalseClass навскидку не нарыл))
      Ответить
    • Где здесь Руби?
      Ответить

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