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

    +126

    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
    if (_documentsCount < 0)
                {
                    var docs = new HashSet<int>();
    
                    _manager.WalkThroughConcepts(delegate(Concept concept, CancelEventArgs cargs)
                                                     {
                                                         foreach (var doc in concept.Documents)
                                                             docs.Add(doc);
                                                     });
    
                    _documentsCount = docs.Count;
                }
    
                return _documentsCount;

    Как сосчитать количество документов в дереве? очень просто - надо всех их добавить в один список (и для этого сделать цикл в каждом узле, разумеется) а потом вернуть количество элементов в списке.

    Запостил: eval_2009, 06 Января 2011

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

    • мда. просто посчитать, конечно же, слишком просто для такого крутого кодера.
      Ответить
      • На самом деле все еще хуже - у человека были проблемы с дубликатами - он некорректно создавал структуру, и некоторые документы принадлежали нескольким узлам. А hashset не кидает ошибок ежели в него пытаться добавить уже существующий элемент. То есть имеем не только медленный код (счет идет на десятки а то и сотню тысяч) но и сокрытие существующей проблемы вместо ее исправления.
        Ответить
        • > hashset не кидает ошибок ежели в него пытаться добавить уже существующий элемент
          а старый при этом не выкинется?
          Ответить
          • Нет
            http://msdn.microsoft.com/en-us/library/bb353005.aspx
            полезный тип если применять правильно
            Ответить
            • > true if the element is added to the HashSet(Of T) object; false if the element is already present.

              все правильно, новый не добавится. Т.е. дубликатов не будет
              Ответить

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