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

    +108.8

    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
    ...
    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, 01 Февраля 2009

    Комментарии (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);
      Ответить
      • yield return
        Ответить
        • Какой йелд-ретурн?
          Йелд-ретурн энумерэйбл возвращает, а тут только первый элемент нужен.
          Ответить
    • return default(Status);
      Ответить

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