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

    −41

    1. 1
    2. 2
    3. 3
    4. 4
    String phone = mobilePhone;
    phone = (phone == null || phone.isEmpty()) ? homePhone : phone;
    phone = (phone == null || phone.isEmpty()) ? workPhone : phone;
    return phone;

    И какой телефон тут главный то? %)

    Запостил: askell, 14 Октября 2015

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

    • В сраной джаве нет String.isNullOrEmpty()?
      Ответить
      • Нету, но к этому привыкаешь. Лучше бы не было тернарного оператора, растудыть его.
        Ответить
        • В джаве нинужно не только то, чего нет, но и то, что есть?
          Ответить
          • guava, Strings.isNullOrEmpty()
            А вообще написать эту функцию невероятно сложно, да.
            Ответить
    • мобильный -> домашний -> рабочий
      С maybe-монадами было бы как-то так
      maybeMobilePhone
          .plus(maybeHomePhone)
          .plus(maybeWorkPhone)
          .getOrElse("911");
      Ответить
      • >>> "" or None or "1"
        '1'

        Жаваебы опять сделали это.
        Ответить
        • вот эту фичу бы - non-clobber boolean operations - в С/С++/С#...
          Ответить
          • В плюсах тривиально подобная магия делается
            Ответить
            • какую именно магию ты имеешь в виду?

              я не вижу никакой возможности/не знаю никакого изврата в крестах что бы код `pMobile1 || pMobile2 || "911"` возвращал поинтер, а не бул.
              Ответить
              • > возвращал поинтер

                Плохая идея, ногу себе легко отстрелить.
                Ну да ладно, пусть будет поинтер:
                http://ideone.com/OArby9
                Клиентский код не в точности как у тебя, но идея, думаю, ясна:
                coalescer_of(mobile) | home | work;
                Ответить
              • http://ideone.com/csC5Vx

                Лениво. Не бул. Но, к сожалению, гццизм.
                Ответить
                • > Но, к сожалению, гццизм.

                  да, но проще и красивее чем у Романа. и я думаю что сообщения об ошибках типов будут покороче.

                  ЗЫ меня удивляет что это расширение еще до сих пор в другие компилеры не перебралось. но с другой стороны, сами gcc'шники его пару раз депрекейтили.

                  ЗЗЫ еще можно попробовать с вариадик макросами и/или темплейтами поизвращатся. но на самом деле лень, потому что такие трюки с высокой вероятностью ревью не пройдут.
                  Ответить
                • Мой говнокод расширяется на произволное понятие пустоты :)
                  Ответить
          • FirstTrue(map( (s) -> new {s, Strings.isNullOrEmpty(s) } ))
            Ответить
            • Нет ленивости
              Ответить
              • На Ху А? Ну И Ху?
                Ответить
                • Чтобы делать всякие cached ?: load() ?: default. Хотя, если ленивость реально нужна, можно из ифов собрать.
                  Ответить
                  • Нахуа она здесь? Я еще понимаю obj?.property1?.property2, где ленивость нужна чтобы npe не лезло
                    Ответить
                    • Для того, чтобы училка тебе двойку не поставила.
                      Ответить
                      • Школьник, только тебе училки ставят оценки.
                        Ответить
                        • Училка, только оценки ставят школьников тебе.
                          Ответить
                          • Ты нового бота обкатываешь?
                            Ответить
                            • Не, я угораю просто гагага
                              Ответить
                              • Ты без Геймдева похоже живешь полной жизнью? Тут никого не банят)

                                Тред я считаю правильный.
                                Ответить
                                • Купи участника, будешь мне банного вестника слать на почту, пока я в бане
                                  [spoiler]
                                  купилки
                                  [/spoiler]
                                  Ответить
                                  • За что тебя забанили?
                                    Ответить
                                    • Там банят только тупых и за политику (так главный сказал). Так как я очень умный, то остаётся один вариант.
                                      Ответить
                                      • > только тупых и за политику
                                        Т.е. умных за политику не банят, тупых не за политику - тоже?
                                        Ответить
                                        • это перечисление, а не конъюнкция
                                          Ответить
                                          • > это перечисление, а не конъюнкция
                                            Вот это всегда бесит в естественном языке: "и" то or, то and, а "или" - xor.
                                            Ответить
                            • пидар, иди 3_14dar, напитон!
                              Ответить
                    • > Нахуа она здесь?
                      Чтобы load() не дёргался если cached не нулл. Пример недостаточно жизненный?
                      Ответить
                      • Ну тогда действительно можно через &&. В данном случае не нужно.
                        Ответить
                  • Говорят, LINQ ленивый, ждём спецов, чтоб выкатили свой ворант.
                    Ответить
                • 3_14dar, иди напитон, пидар!
                  Ответить
                  • 3_14тон
                    Ответить
                    • Кстати, недавно пришёл 3_dar. Все думали, что за хрень, а тут вот оно как выходит: 3_14тон и 3_тон.
                      Ответить
                      • > 3_тон

                        Название «Tryton» программа получила благодаря слиянию двух слов: Тритон, наибольший спутник планеты Нептун, и язык программирования Python.

                        https://ru.wikipedia.org/wiki/Tryton
                        Ответить
                  • Почему ты это пишешь из-под гостя всегда?
                    Ответить
      • Да как бы в соседнем методе (определение страны чего то там), успешно используется стопка "if () { return }" - все быстро и легко читается. Зачем с телефонами так заморочились - не понятно.
        Ответить

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