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

    +116

    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
    38. 38
    class MyClass
    {
      private List<MyObject> _collection = new List<MyObject>();
      public int SelectedObjectIndex { get; set; }
    	
      private void SelectionChanged( List<MyViewObject> selectedObjects )
      {
        bool bFound = false;
    
        foreach (MyViewObject item in objects)
        {
          if (!bFound)
          {
            for (int i = 0; i < _collection.Count; i++)
            {
              if (item.Tag != null && item.Tag is MyObject)
              {
                if (_collection[i] == item.Tag)
                {
                  this.SelectedObjectIndex = i;
                  bFound = true;
                  break;
                }
              }
            }
          }
          else
          {
            break;
          }
        }
    
        if (!bFound)
        {
          SelectedObjectIndex = -1;
        }
      }
    }

    Просто кладезь какой-то.
    Я переделал исходный код, чтобы было понятнее кто здесь кому и не нужно было разбираться со сложной структурой классов, которая используется в исходнике.
    Все имена классов вымышленные, на них не нужно обращать внимание - все лишь для демонстрации подхода к построению циклов и поиску объектов в коллекциях.

    Запостил: ICELedyanoj, 17 Февраля 2012

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

    • Junior + MVVM?
      Ответить
      • Да, дерзкий Джуниор (мне так и не удалось убедить его, что он пишет плохо и с этим нужно что-то делать).
        Уволили. Теперь вот принял себе в наследство его код.
        Печатал, гад, очень быстро. Кода наворотил - просто гигатонны, но он на 99% состоит из конструкций такого рода.
        Но не MVVM. Это я упростил код, чтобы было видно саму суть. Там в оригинале с гридом идет работа, но не расписывать же все классы и методы. 9415 - тоже его работа.
        Ответить
    • Я честно не совсем понимаю, в чем суть кода, но не скомпилится, если objects нигде не объявлен. Ну а так - наверное, неправильный выбор структуры данных, непонятные (возможно лишние проверки)... хз.
      Ответить
      • Извиняюсь - я просто в последний момент поменял имя аргумента objects на selectedObjects, чтобы было понятнее что здесь вообще происходит.
        Ответить
        • И почему было не использовать refactor-rename из студии? Или, на худой конец, find-replace.
          Ответить
          • он же в веб-окошке правил, там refactor-rename не работает
            Ответить
          • Правил не из студии - у нас огромный солюшен, на 50+ библиотек - негоже прямо там править.
            Ответить

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