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

    −86

    1. 1
    2. 2
    3. 3
    4. 4
    scope :search_by_title, proc { |title|
      title = sanitize_sql(title).gsub(/'/, '').strip().split().join(':* &') << ":*"
      where("to_tsvector('english', title) @@ to_tsquery('english', '#{title}')").order("case when title ~* '^#{title}' then 1 else 2 end")
    }

    в рабочем проекте клиент решил, что он тоже программист.. я менять ничего не стал, просто дописал коммент про facepalm

    Запостил: cheef, 15 Мая 2012

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

    • cheef, можешь в двух словах описать здесь где плохо? я по-ruby не понимаю совсем )
      Ответить
      • Можно было засунуть все эти гсубы (замена подстрок кажись) и стрипы в sanitize_sql.
        И можно было разделить на несколько независимых строк. Слишком уж длинная цепочка операций
        Ответить
    • тут даже рубист без бутылки не разберётся - это пример местечковой оптимизации, которая на деле ничего не даёт
      Ответить
      • А это одна из причин, почему Ruby такое говно.
        Если язык позволяет запутать код до неузнаваемости - это большая архитектурная проблема языка.
        Попробуйте повторить на том же PHP - не получится. Т.е. даже такое уг как PHP лучше Ruby.
        Ответить
        • Ты еще напиши, если язык позволяет написать произведения Дарьи Донцовой, то он гамно...
          Ответить
    • если заказчику не указать на его неадекватность, в следующий раз он напишет больше)
      Ответить
    • ох бляяяя... после такого кода... хочется просто не разбиратсья дальше
      Ответить
    • Самое смешное - когда клиент хочет чтобы вы нашли в своём коде ошибку, которую он дописал.
      В первый раз думал - шизофрения началась (я был единственный Ruby-программист и git blame, конечно, не делал).
      Ответить

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