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

    +71

    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
    if (prodAttainment < payeeSalesGoal)
    {
    	cashComp = 1;
    }
    else if (prodAttainment < 1.25 * payeeSalesGoal
    		&& prodAttainment >= payeeSalesGoal)
    {
    	cashComp = 0.75;
    }
    else if (prodAttainment >= 1.25 * payeeSalesGoal)
    {
    	cashComp = 0.5;
    }

    Меня гнет или и правда нужно столько проверок? Чтоб наверняка...

    Запостил: askell, 27 Сентября 2011

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

    • Как вариант:
      cashComp = 1;
      if (prodAttainment >= payeeSalesGoal)
      {
          cashComp = 0.75;
          if (prodAttainment >= 1.25 * payeeSalesGoal)
          {
              cashComp = 0.5;
          }
      }
      Ответить
    • float tmp = prodAttainment / payeeSalesGoal;
      
      if (tmp < 1)
      	cashComp = 1;
      else if (tmp < 1.25)
      	cashComp = 0.75;
      else
      	cashComp = 0.5;
      Ответить
    • if (prodAttainment < 1.25 * payeeSalesGoal && prodAttainment >= payeeSalesGoal)

      не люблю такую запись. Мне, как математику, кажется более очевидной
      if (payeeSalesGoal <= prodAttainment  && prodAttainment < 1.25 * payeeSalesGoal)


      В целом, для меня предпочтителен исходный вариант, с небольшими доработками, т. е.
      if (prodAttainment < payeeSalesGoal)
      {
      	cashComp = 1;
      }
      else if (payeeSalesGoal <= prodAttainment  && prodAttainment < 1.25 * payeeSalesGoal)
      {
      	cashComp = 0.75;
      }
      else if (prodAttainment >= 1.25 * payeeSalesGoal)
      {
      	cashComp = 0.5;
      }

      Читается лучше, чем все варианты предложеные выше.
      Ответить
    • Попробовал упросить.
      Стало так:
      final float k = prodAttainment / payeeSalesGoal;
      cashComp = k < 1.0f ? 1.0f : (k < 1.25f ? 0.75f : 0.5f);


      может еще проще можно? :)
      Ответить
      • Замена if'ов тернарным оператором по-вашему считается упрощением?
        P.S. А если "упросить", то не упросите.
        Ответить
    • Вздохнув с облегчением, я положил трубку и взялся руками за голову. Да, врать нехорошо, но что мне оставалось делать? Не расскажу же я ей о том, что меня девушка бросила, и я, как пацан какой-то, с горя решил ужраться...
      Ответить

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