1. JavaScript / Говнокод #16351

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    function dotsOrder($dots)
    {
          if($dots>=4){
                return 18;
           } else if($dots>=3 && $dots<4){
                return 17;
           } else if($dots>=2 && $dots<3){
                return 16;
           } else if($dots>=1 && $dots<2){
                return 14;
           } else if($dots>=0 && $dots<1){
                return 12;
           } else {
                return 10;
            }
    }

    Запостил: EugeneC, 16 Июля 2014

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

    • Кажется мне -- этот код будет работать и на PHP.
      http://ideone.com/xjj6Z7
      Ответить
    • $dots>=3 && $dots<4

      Налицо нарушение высшей нервной деятельности писавшего
      А может он постеснялся поискать в гугле оператор ==?
      Ответить
      • А вдруг это... число с плавающей точкой? Тут же не статическая тупизация, и мы не знаем, что именно делает эта функция, и на какие входные данные ее затачивал автор.
        Ответить
        • Блеать!

          Что то у меня тоже нарушение высшей нервной деятельности

          Ну тогда можно проверять <0 else <1 else <2 и тд
          Ответить
          • $dots < 0 ? 10 : floor($dots) * 2 + 12
            Как-то так.

            UPD: Оп-ля, а она нелинейная. Тогда такой простой формулой не отделаться ;(
            Ответить
            • А как же 17?
              Ответить
              • Дык я написал в UPD'е, что формула не проканает.
                Ответить
                • Дык ты четерски подправил сообщение, а я четкий, дерзкий, как пуля резкий
                  Ответить
                  • Он доктор Борманд. Он правит сообщения как все доктора.
                    Ответить
                    • Доктор Кто не правит сообщения. Он правит вселенную
                      Ответить
            • $dots < 0 ? 10 : $dots > 3 ? 18 : [12,14,16,17][$dots]
              Ответить
      • Тут обычное сравнение на принадлежность интервалам. Нужно делать или через одинарные неравенства:
        /**/
                if($dots>=4){
                    return 18;
               } else if($dots>=3){
                    return 17;
               } else if($dots>=2){
                    return 16;
                ....
        Или разорвать цепочку:
        /**/
               if($dots>=4)
                    return 18;
               if($dots>=3 && $dots<4)
                    return 17;
               if($dots>=2 && $dots<3)
                    return 16;
                ...
        Первый вариант мне кажется более вменяемым.
        Ответить
    • - Правда? - мне даже стало немного обидно, хотя и ненадолго.
      Ответить

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