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

    +103

    1. 1
    2. 2
    3. 3
    4. 4
    private ListBoxItem FindItem(string guid)
    {
            return _userlist.Items.Cast<ListBoxItem>().FirstOrDefault(item => ((TextBlock) ((StackPanel) item.Content).Children[1]).Text == guid);
    }

    Функция поиска элемента в ListBox по значению Guid в одну строку. Наговнокодил ReSharper.

    Запостил: botinko, 09 Мая 2010

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

    • И где же здесь говнокод. ИМХО все понятно и красиво. А вот то что тут куча приведений типа, то это косяк автора, но никак не Resharper'а
      Ответить
    • Два предположительно лишних каста - не повод сокрушаться
      Ответить
      • Этот код явно из Silverlight. А там двойной каст обусловлен полиморфным типом. Код абсолютно верный. Можно, конечно, без кастов обойтись, а можно и исключение получить... тут как в анекдоте про Ржевского: можно и по морде, а можно и впиндюрить. Но если можно застраховаться, то почему это не сделать?
        Ответить
        • > Этот код явно из Silverlight

          откуда видно?
          Ответить
          • Может быть WPF. А видно из использования StackPanel.
            ((TextBlock) ((StackPanel) item.Content) - item приводится к StackPanel, его контент - к TextBlock. - все верно.
            Cast<ListBoxItem>() - используется, чтоб сделать выборку только из элементов ListBoxItem, так как в списке _userlist.Items могут содержаться не только ListBoxItem-сы.
            Если этого не сделать, то, может возникнуть исключение.
            Так что, никаких лишних кастов в коде нет, и решарпер сформировал абсолютно верную лямбда конструкцию. Если бы люди так писали, то исключения возникали бы реже.
            Ответить
    • Да, совершенно верно, это Silverlight
      Ответить

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