1. C++ / Говнокод #12593

    +24

    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
    17. 17
    18. 18
    int MyForm::modelId(int button, bool rarefied, bool grouped)
    {
        if (button == 4)
            return 9;
        else
        {
            Q_ASSERT(button == 1 || button == 2 || button == 3);
            if (!rarefied)
                return (button - 1);
            else
            {
                if (!grouped)
                    return 3 + (button - 1);
                else
                    return 6 + (button - 1);
            }
        }
    }

    Энумы? Не, не слышал.

    Запостил: ABBAPOH, 14 Февраля 2013

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

    • magic numbers, voodoo bumbers
      Ответить
    • надо было так:
      if(button == 4)
      return button+5;
      Ответить
      • int MyForm::modelId(int button, bool rarefied, bool grouped) {
            return button + (button < 4 ? rarefied ? grouped ? 5 : 2 : -1 : 5);
        }
        Ответить
        • Это более читаемо, чем оригинал.
          Ответить
          • О_о

            Ну в оригинале автор, конечно, перестарался с отрицаниями, но кроме волшебных цифр ничего непонятного там нет.
            Ответить
          • Кнопки 1-3 выбирают:
            Если не стоит rarified - модели 0-2.
            Если стоит rarified но не grouped - модели 3-5.
            Если стоят и rarified и grouped - модели 6-8.
            Кнопка 4 всегда выбирает модель 9.

            Вполне читаемо и понимаемо. Знать бы еще что-за пронумерованные кнопки и модели ;)
            Ответить
            • Бинго:) А вот для понимания номеров как раз подойдут энумы. Ничего дико плохого в коде, на самом деле, нет, просто показалось забавным.
              Ответить
        • ВЫ СОВЕРЕШЕННО НЕ ПОНИМАЕТЕ СМЫСЛ ЭТОГО КОДА. СУТЬ В ЦИФРЕ 5!
          return button + (button+1 <5 ? rarefied ? grouped ? 5 : 5*5/10 : -5/5 : 5);

          @dwarf_with_beer во многом прав.
          Ответить
          • Ехал button через 5.
            Видит button: 5,5,5,
            Кликнул button цифру 5
            5,5,5, 5,5, 5,5!
            Мой голос стал ↑+5. Это подтверждает правоту моих слов: http://www.peeep.us/14b7eaa0
            Ответить
          • return button + (button+5/5 < 5 ? rarefied ? grouped ? 5 : 5*5/(5+5) : -5/5 : 5);
            fxd
            Ответить
            • кстати, возможны ли ситуации когда в выражении A*B/C сначала выполнится деление, а потом умножение?
              Ответить
              • Нет, очевидно, это нарушит результат
                Ответить
                • погрешность изменится и не будет переполнения (в случае больших цифр)?
                  Ответить
    • Это с каких пор слово button стало крестоблядским зарезервированным словом?
      Не, если из кода смотреть, то всё нормально, а если из стока, то оно синее
      Ответить

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