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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
...
IEnumerable<Status> Statuses;

public Status GetCurrentStatus1() {
  var e = Statuses.GetEnumerator();
  e.MoveNext();
  return e.Current;
}

public Status GetCurrentStatus2() {
  foreach (var e in Statuses)
    return e;
  return null;
}

public Status GetCurrentStatus3() {
  return Statuses.FirstOrDefault();
}

Возник вопрос - что больший говнокод? Или есть вариант лучше? (3 вариант хорош, но только когда .NET 3 есть)

Запостил: guest guest, (Updated )

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

  • micky:
    1 - проверка на условие отсутствует
    2 - читабельно, хотя медленнее чем 1.
    3 - да, нормально, просто метод расширения соотв. нужен
    если нет .net 3.5, то можно так:

    public T GetFirstOrDefault<T>(IEnumerable<T> list)
    {
      IEnumerator<T> en = list.GetEnumerator();
      return en.MoveNext() ? en.Current : default(T);
    }
    
    // ...
    Status s = GetFirstOrDefault<Status>(Statuses);
    Ответить
      • Какой йелд-ретурн?
        Йелд-ретурн энумерэйбл возвращает, а тут только первый элемент нужен.
        Ответить

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

Семь раз отмерь — один отрежь, guest!

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


    8