Си диез / Говнокод #3189 Ссылка на оригинал

0

  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 botinko, (Updated )

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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8