1. C# / Говнокод #20465

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if (test)
    {
    _inquiryLineRepository.RequestToOrderAPI(model, idetails, true);
    
    }
    else
    {
    _inquiryLineRepository.RequestToOrderAPI(model, idetails);
    }

    индусы радуются и танцуют групповые танцы, когда видят, что подобный код пишет кто то кроме них

    Запостил: and1dufresn3, 04 Августа 2016

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

    • а вдруг там без параметра по умолчанию, а это 2 разных метода?
      Ответить
      • вангую, что там определение метода public voind RequestToOrderAPI(object model, object idetails, bool test=false){...}
        и можно было бы поменять на inquiryLineRepository.RequestToOrderAPI( model, idetails, test);
        Ответить
      • Если бы это было еще и два разных метода, то индусы бы фильм сняли по этому поводу.
        Ответить
        • А в джаве это и были бы 2 разных метода.
          Ответить
          • А в хаскеле этот код вообще бы не запустился. Продолжим сравнения?
            Суть в том что даже если бы это были два разных метода типа перегрузки, то все равно лаконично было бы вызвать
            inquiryLineRepository.RequestToOrderAPI( model, idetails, test);
            Даже в джаве, блджад.
            Ответить
          • А в сисярпе нет?
            Ответить
            • В сисярпе дефолты вроде есть.
              Ответить
              • сисярпа не существует
                существует CLR. И там это были бы разныеметоды
                Ответить
                • Хм, т.е. сисярповые дефолты в CLR разваливаются на пачку методов (а не просто подставляются значения в точку вызова, как в крестах)?
                  Ответить
                  • Ага, на 2**N дефолтов.
                    Ответить
                    • Ну там же именованных параметров нету? Так что просто на N.
                      Ответить
                    • Хуй там, опциональный параметр в IL имеет аттрибут [Opt], никакого развала не происходит
                      Ответить
                  • Декомпилятор/дизассемблер в помощь.
                    Ответить
                  • >Хм, т.е. сисярповые дефолты в CLR разваливаются на пачку методов (а не просто подставляются значения в точку вызова, как в крестах)?
                    возможно это ответит на твои вопросыhttp://codebetter.com/2011/01/11/c-in-depth-optional-parameters-and-named-arguments-2/
                    Ответить
                    • The generated IL acts exactly as if your original source code had contained the default value. This means if you ever change the default value without recompiling everything that references it, the old callers will still be using the old default value.

                      Ну короче всё-таки как в крестах: существует только одна копия метода, которая принимает все аргументы, а дефолтные значения тупо подставляются в точках вызова, как-будто их руками передали.
                      Ответить
                • >> сисярпа не существует
                  >> существует CLR.

                  Ты долбоеб? Языков программирования не существует, существует только бинарный код
                  Ответить
                • Ха, ты пернул в лужу
                  Ответить
    • Код говно.
      ВНИМАНИЕ. ГОВНОКОДНАДЗОР ПРЕДУПРЕЖДАЕТ! ЧЕРЕЗМЕРНОЕ ЗЛОУПОТРЕБЛЕНИЕ ОДИНАКОВЫМИ ДЕЙСТВИЯМИ ПРИВОДИТ К ОЖИРЕНИЮ ДАННЫХ НА ЖЕСТКОМ ДИСКЕ!!!
      Ответить
    • public void RequestToOrderAPI(object model, object idetails, bool test)
      {
      if (test == true) throw new ArgumentException("test");
      ***
      }

      public void RequestToOrderAPI(object model, object idetails)
      {
      bool test = false;
      ***
      }
      Ответить

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