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

    −103

    1. 1
    2. 2
    3. 3
    def reversed?
        !!reversed_by_id
    end

    Запостил: tarabo, 04 Марта 2013

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

    • и чо?
      Ответить
    • Бывало столько раз, сколько уже и не упомню.
      Ответить
    • Это нормальная идиома в Ruby, а не говнокод.
      Ответить
      • > Это нормальная идиома в Ruby
        И даже в сишечке.
        Ответить
        • Изначально сишечка. Отчасти потому в условиях разрешили интовую ересь и отказались от логического типа.
          Помню тут кто-то рассказывал что это стандартный прием javaScript. Чем несказанно меня насмешил.
          Ответить
          • Тут же двойное отрицание?
            Смысл делать двойное отрицание?
            Ответить
            • Хотя если метод возвращает число, то может быть и есть.
              Ответить
              • > Хотя если метод возвращает число, то может быть и есть.
                Именно так. bool в сишке не было, if и while отлично работали с интами, но иногда нужно было "нормализовать" число, превратив его в 0 (если был 0) или 1 (если был не 0). Вот тогда и оказывалась полезной такая идиома.

                P.S. Можно еще вместо !!x написать x && 1 или x || 0, но это длиннее и не так красиво...
                Ответить
            • >Смысл делать двойное отрицание?
              (bool) x //каст в бул
              Ответить
            • !nil # true
              !!nil # false
              Ответить

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