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

    +126

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public static IEnumerable<TItem> GetNextItemFrom<TItem>(IEnumerable<TItem> Collection)
            {
                foreach (var Item in Collection)
                    yield return Item;
            }

    Запостил: Говногость, 26 Июня 2011

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

    • Название функции не правильное.
      Ответить
      • >не правильное
        Ответить
        • Технически верно, смотря что имел в виду автор.

          Название неправильное. = The name is wrong.
          Название не правильное. = The name isn't right.

          В школе Мариванна наверное конечно учила, что правильно только слитно писать?..
          Ответить
    • Вооще какаято ничитаемая хуня
      Ответить
    • тут ещё WindowsGovno не отметился
      Ответить
    • Метод просто глубоко клонирует коллекцию. Без yield получится так:

      public static IEnumerable<TItem> GetNextItemFrom<TItem>(IEnumerable<TItem > Collection)
      where TItem : new()
      {
      // Создать новую коллекцию.
      IList<TItem> list = new List<TItem>();

      // Скопировать в новую коллекцию все элементы из коллекции принимаемой в параметре метода GetNextItemFrom()
      foreach (var Item in Collection)
      {
      // К примеру, элементы из входящей коллекции не поддерживают клонирование.
      TItem newItem = new TItem();
      newItem.Prop1 = Item.Prop1;
      newItem.Prop2 = Item.Prop2;
      newItem.Prop3 = Item.Prop3;
      // и т.д.

      list.Add(Item);
      }

      // Вернуть клонированную коллекцию.
      return list;
      }

      Ну не очень элегантно. А если код достался в наследство, то это как вариант. Имя метода канеш такое, не очень.

      Ну а так бывает и хуже.

      Не, это не говно. -1
      Ответить
      • Сорри ошибся, yield клонирует поверхностно элементы

        эт эквивалентно этому:

        public static IEnumerable<TItem> GetNextItemFrom<TItem>(IEnumerable<TItem > Collection)
        {
        // Создать новую коллекцию.
        IList<TItem> list = new List<TItem>();

        // Скопировать в новую коллекцию все элементы из коллекции принимаемой в параметре метода GetNextItemFrom()
        foreach (var Item in Collection)
        list.Add(Item);

        // Вернуть клонированную коллекцию.
        return list;
        }

        Да, не очень удачный метод.
        Ответить

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