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

    +135

    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
    public void SelectStep(int stepNumber)
    {
        //1.HTTPCore
        //2.find cat
        //3find p.cat
        //4.find products
        //5.parse products info
        //6.save
        //7.complete
        if (stepNumber != 1) ((Label)(this.panel.Controls.Cast<Control>()
            .First(c => c.TabIndex == stepNumber - 1))).ForeColor = Color.Black;
        ((Label)(this.panel.Controls.Cast<Control>()
            .First(c => c.TabIndex == stepNumber))).ForeColor = Color.Red;
        if (stepNumber == 6)
        {
            labelStatusSecondLine.ForeColor = Color.Black;
            labelStatusFirstLine.Text = "Готово."; buttonStart.Enabled = buttonRefreshCats.Enabled = true; timer.Stop();
        }
        if (stepNumber == 7)
        {
            labelStatusSecondLine.Text = "Обновление категорий...";
        }
    }

    Досталось в наследство. Слегка переписано мной (ранее у всех лейблов были имена вроде "label1" – к лейблам аффтар обращался по распарсенным оттуда цифрам).

    Запостил: pushistayapodmyshka, 20 Ноября 2014

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

    • Программу на PHP можно написать на любом языке, даже на C#.
      Ответить
      • Это не программа на PHP. Тут нет ни одного доллара.
        Ответить
        • Баксы для слабаков: http://ideone.com/qnojHE
          Ответить
          • Напоминает вторую страницу статьи "введение в ФП". Парочка констант, задача для примера, код в три строки и распечатывание результата.
            Ответить
            • Пожалуй, следует добавить скобочек, чтобы было больше похоже на Лисп.
              Ответить
        • Но это программа на C#. А C# - это Ънтерпрайз. А Ъ - это много долларов!
          Ответить
    • > ранее у всех лейблов были имена вроде "label1"
      Декомпилер детектед.
      Ответить
      • было: Слегка переписано мной (ранее у всех лейблов были имена вроде "label1"
        стало: labelStatusSecondLine
        labelStatusFirstLine
        цифры на буквы заменил, это и называется "слегка переписано мной" ?
        Ответить
        • Там, кроме статусов, было ещё что-то. Предыдущий говнокодер даже коммент вон оставил о том, за что отвечает каждый лейбл.

          >цифры на буквы заменил
          Ну, строго говоря, распарсивание названий лейблов было выпилено и заменено на использование TabIndex (что немногим лучше, в общем-то).
          Ответить
          • Я конечно не видел как там распарсивалось все, если там было что то вроде "label1" и делалось что вроде того, control.id.replace("","label"), то это нормально. Вместо этого вы берете коллекцию контролов, кастуете ее к колекции контролов, с помощью лямбды выбираете первый элемент, кастуете его к лейблу, короче цирк шапито и при чём следующей строкой делается та же операция, я надеюсь что компилятор умен и не повторяет всех этих операций, как вы. Сударь, а вы в курсе что лямбда заставляет компилятор создавать класс новый и потом уже вызывать его метод? Зачем cast? Чтобы работали методы раширения Хах) (panel.Controls[0] as Label) такое написать религия не позволяет? Знаете, опять таки повторюсь, не знаю какое там было распарсивание, но оно явно лучше чем вот эта карусель
            Ответить
            • (panel.Controls[0] as Label)

              Это, конечно, правильно, но тогда меня не беспокоило то, что будет творить компилятор. Стояла задача: поправить говнокод так, чтобы приложение снова работало так, как угодно заказчику. И вдруг мне на глаза попались лейблы с ни о чём не говорящими именами (оттуда, чем-то вроде IndexOf(), парсились порядковые номера лейблов); после того, как я их переименовала, этот метод обвалился – ну и руки зачесались упрятать порядковые номера в TabIndex.
              Ответить
              • Да не то чтобы я прям о компиляторе волнуюсь, скорее задаюсь вопросом, не вызывает ли подозрений у человека такой код, когда он его пишет. Да проще было б и оставить цифры в лейбле и делать как я писал) int.parse(panel.controls.id.replace(""," label") разве не проще? Имена не меняются, цифры уникальные и есть в Id
                Ответить
                • >не вызывает ли подозрений у человека такой код, когда он его пишет
                  Тогда – не вызывал. Так и родился этот говнокод, собственно.

                  >оставить цифры в лейбле
                  >не проще?
                  >label1
                  Не проще. Такие названия контролов отвлекают меня от работы.
                  Ответить
    • Линк и лямбды - модно, стильно, молодежно!
      Ответить

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