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

    +120

    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
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    if (IsSetPrinter)
                            {
                                if (Counter == 0)
                                {
                                    printingIsOkay = PrintDocument(letterIDsString
                                   , row.DocumentTemplateVersionID
                                   , row.DocumentTemplate
                                   , (row.IsHeader_DocumentTemplateVersionIDNull() ? (int?)null : row.Header_DocumentTemplateVersionID)
                                   , (row.IsFooter_DocumentTemplateVersionIDNull() ? (int?)null : row.Footer_DocumentTemplateVersionID)
                                   , true
                                   , Counter
                                   , Counter == documentTemplateVersions.Count - 1);
                                }
                                else
                                {
                                    printingIsOkay = PrintDocument(letterIDsString
                                  , row.DocumentTemplateVersionID
                                  , row.DocumentTemplate
                                  , (row.IsHeader_DocumentTemplateVersionIDNull() ? (int?)null : row.Header_DocumentTemplateVersionID)
                                  , (row.IsFooter_DocumentTemplateVersionIDNull() ? (int?)null : row.Footer_DocumentTemplateVersionID)
                                  , false
                                  , Counter
                                  , Counter == documentTemplateVersions.Count - 1);
                                }
    
                            }
                            else
                            {
                                printingIsOkay = PrintDocument(letterIDsString
                                   , row.DocumentTemplateVersionID
                                   , row.DocumentTemplate
                                   , (row.IsHeader_DocumentTemplateVersionIDNull() ? (int?)null : row.Header_DocumentTemplateVersionID)
                                   , (row.IsFooter_DocumentTemplateVersionIDNull() ? (int?)null : row.Footer_DocumentTemplateVersionID)
                                   , false
                                   , Counter
                                   , Counter == documentTemplateVersions.Count - 1);
                            }

    Я бы выложил весь класс. Он весь такой. Но, думаю, вы поняли кто писал?

    Запостил: kore_sar, 23 Июля 2013

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

    • Человек с построчной оплатой?
      Ответить
      • Если он пишет удобочитаемый код(несмотря на причины его нечитаемости в классическом виде) - сразу построчная оплата? Я не согласен.
        Впрочем, всё хорошо в меру...бывают и совсем хреновые случаи http://vk.com/wall7468765_12845
        Ответить
      • К слову, а она существует вообще? Есть ссылки на вакансии?
        Ответить
        • Видимо нет. Или все вакансии уже заняты лентяями с кодогенератором.
          Ответить
        • Надо же как-то оценивать эффективность программиста. В закрытых багах не очень информативно.
          Ответить
        • Существуешь - нанимаешься дураку софт писать - он даже будет ходить вокруг. заглядывать через плечо и спрашивать "Хули так мало строк" А потом скажет, что хочет, что бы из экрана вылетали единороги и какали пиццей. Но обычно работа с такими людьми заканчивается раньше срока - либо он тебе плешь проест, либо "ты не такой хороший программист, как я думал"
          Ответить
    • Такой код, вероятнее всего, рождается в компаниях с корпоративной культурой программирования. Ну, чтоб сосед и потомок могли всё понять :)
      Ответить
      • Наверное в это сложно поверить, но эти программисты тупо не знают другого способа достигнуть задуманное. Этот софт был написано в небольшой конторе несколькими людьми. Я тут работаю с недавна. :(
        Ответить
        • Кстати, а чем отличаются эти 3 блока? Я навскидку не вижу отличий...

          P.S. А, нашел, в шестом параметре стоит IsSetPrinter && Counter == 0.
          Ответить
          • Поздравляю. Вы только что нашли корень зла!
            Ответить
            • Да не, корень зла походу в том, что автор не знал булевых операций ;) Или не знал, что их можно юзать не только в if/while.
              Ответить
              • Тернарки то есть, должен знать
                Ответить
                • Уходи, крестоблять!
                  Ответить
                • > Тернарки то есть
                  IsSetPrinter ? Counter == 0 ? true : false : false
                  Ответить
                  • Сразу видно, что не пэхапэшник. Пэхапэшник наставил бы скобочек, чтобы подстраховаться.
                    Ответить
                    • И правильно бы сделал. Потому что в PHP тернарник перекошенный. Но здесь тема о C#, и во всех языках кроме PHP так прокатит.

                      P.S. Кстати этот код должен правильно отработать даже в PHP. Там же конструкции вот такого вида фейлятся:
                      $a ? "a" : $b ? "b" : "other"
                      Ответить
              • Самое интересное, что ?: он все таки использует. Может его шайтан попутал.
                Ответить
      • Где-то мне довелось прочитать про питониста, который писал по аргументу на строчке, чтобы с свном было легче работать. Изменения сигнатуры и добавление новых аргументов не портили уже созданные строки с аргументами. Уж не упомню, на ГК, или где ещё было.
        Ответить
        • Ему бы по-японски писать, там вообще все можно вертикально: сабвершн бы следил за каждой буквой - разионализация!
          Ответить
    • Oh it's not fair, but the printing is ok,
      The version is ok,
      The header is ok,
      Oh you're supposed to care, but all you do is take,
      All you do is take
      Ответить
    • Кстати, а разве нужно кастовать null в int? ?
      Ответить
      • Нет, без каста вполне прокатывает.
        Ответить
      • В принципе не нужно int? - это и есть обвертка для инта, способная принимать значение null. А вообще это извращение использовать такие обвертки - лучше value-object самому сделать
        Ответить

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