1. Java / Говнокод #18641

    −11

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    private static <T extends Comparable<T>> int compareTo(final T c1, final T c2) {
    		final boolean f1, f2;
    		return (f1 = c1 == null) ^ (f2 = c2 == null) ? f1 ? -1 : 1 : f1 && f2 ? 0 : c1.compareTo(c2);
    	}
    
          BigDecimal newDiscountPrice = .....;
          BigDecimal oldDiscountPrice = ......;
          if (compareTo(newDiscountPrice, oldDiscountPrice) != 0) {
              ....
          }

    Видимо ObjectUtils.notEqual(newDiscountPrice, oldDiscountPrice) или старого доброго
    !(newDiscountPrice==null? oldDiscountPrice==null: newDiscountPrice.equals(oldDiscountPrice ))
    недостаточно)

    Запостил: lameduck, 27 Августа 2015

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

    • Мальца запутанный oneliner, с этим xoroм и безо всякого форматирования. Но в целом ничего особенного, просто логика стрёмная. (!=null) > (==null)

      >compareTo
      Видимо задел на будущее.
      Ответить
      • > Видимо задел на будущее
        Почему на будущее? Логика вроде такая:
        - если оба значения null, то они равны
        - если одно из значений null, а второе - нет, то null меньше
        - если оба значения не null - сравниваем их по-настоящему

        Этакий order by hui.length asc nulls first.
        Ответить
        • >> nulls first

          Это в оралуке такая фича?
          Ответить
          • В слонике тож было.
            Ответить
            • В MSSQL такого нет
              Ответить
              • В MSSQL много чего нет. Одна из самых убогих реализаций, на самом деле.
                Ответить
                • Зато CTE есть, бе-бе-бе
                  Ответить
                  • Это что такое? With для вытаскивания подзапроса что ли? Он и в слонике есть.
                    Ответить
                    • Рекурсивный "до-тех-пор-пока-не-перестанет-меняться" With запрос. Что за слоник? Как в нем реализовано?
                      Ответить
                      • http://www.postgresql.org/docs/9.1/static/queries-with.html

                        M$$QLбляди соснули хоботца?
                        Ответить
                        • Вот только хоботца нам не хватало

                          Я постгресс только издали видел, так что хз чего там нет

                          А вот к оралуку у меня ненависть . Я его 2 года изучал и всей душей ненавижу. Сначала я делал какую то непонятную хрень с помощью визардов и ненавидел ее, а потом я понял что я делал и возненавидел еще больше. Моя психика сломана
                          Ответить
                          • в оракле рекурсивный with есть начиная с 11.2
                            в довесок к тёплому ламповому connect by

                            а визарды к субд никакого отношения не имеют
                            Ответить
        • >Почему на будущее?
          Потому что используется оно только как equals
          if (compareTo(newDiscountPrice, oldDiscountPrice) != 0) {
          Ответить
    • > a ? b ? c : d : e ? f : g
      Автор кода явно не притрагивался к PHP. Везунчик.
      Ответить
      • А в этом вопросе пхп ведет себя как перл?
        Ответить
        • Я не знаю, как в этом вопросе ведёт себя пёрл...

          Но пых ведёт себя как-то так: (a ? b ? c : d : e) ? f : g

          И именно после него я навсегда перестал выябываться со вложенными тернарниками...
          Ответить

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