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

    −96

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    module AuthenticatedSystem
    protected
    
    def logged_in?
      !!current_user
    end
    
    def current_user
      @current_user ||= login_from_session unless @current_user == false
      @current_user
    end

    Запостил: bebesuk, 12 Августа 2011

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

    • обоснуй
      Ответить
    • внезапно бывший ( недели не прошло ) пыхер пишет на руби
      логика !!current_user на руби особенно ущербна, с тем же успехом можно возвращать тупо current_user, т.к. все равно че угодно кроме nil и false сойдет за true в булевом контексте
      однако, @current_user ||= login_from_session unless @current_user == false, имеет право на жизнь, но только в случае если login_from_session возвращает false как флаг ошибки или вроде того ( си стайл епта )
      то есть код current_user может быть не говном - но только в случае, если код login_from_session таки им является
      говно порождает говно, однако
      Ответить
    • > т. к. все равно че угодно кроме nil и false сойдет за true в булевом контексте
      nil && true вернет nil, а не false. А вот это уже далеко не всегда желательно
      Ответить
      • ага, но опять же, это не желательно только в случае, если false используется как C-стайл "флаг ошибки", с дальнейшей проверкой something == false, что в руби - самый натуральный говнокод
        если же тупо проверять something в булевом контексте ( if; unless ), то разницы между nil и false никакой нет
        в данном случае, скорее всего, имеет место быть "оптимизация", чтобы не дергать login_from_session лишний раз после фейла оного, но это я тоже считаю говном, т.к. гораздо логичнее использование какого-нибудь AnonymousUser
        Ответить
    • Это просто шедевр
      Ответить
    • @current_user ||= login_from_session unless @current_user == false
      И всё обернуть if-ами. В case-е.
      Ответить

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