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

    +132.4

    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
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    var ChildListWithCondition =
                    (from list in ChildList
                     join requestedRelatedEntityIds in EntitiesIdInList on list.ParentEntityId equals requestedRelatedEntityIds
                     join requestedEntityType in EntityTypeIdToTake on list.EntityTypeId equals requestedEntityType)
                     .Select(list => 
                         new LayoutDataOutputStructure()
                         {
                             ParentEntityId = list.ParentEntityId,
                             EntityId = list.EntityId,
                             FieldId = list.FieldId,
                             FieldValue = list.FieldValue,
                             EntityTypeId = list.EntityTypeId,
                             RelationTypeToParent = list.RelationTypeToParent,
                             FieldValueId = list.FieldValueId
                         })
                    .GroupBy(item => item.ParentEntityId)
                    .Select(group => new
                        {
                            ParentEntityId = group.Key,
                            GroupEntityTypeId = group.GroupBy(item => item.EntityTypeId)
                                .Select(group2 => new
                                                     {
                                                        EntityTypeId = group2.Key,
                                                        EntityRelation = group2.Select(item => item.RelationTypeToParent).FirstOrDefault(),
                                                        GroupEntityId = group2.GroupBy(group3 => group3.EntityId)
                                                            .Select(group3 => new
                                                                                  {
                                                                                      EntityId = group3.Key, 
                                                                                      Fields = group3.GroupBy(group4 => group4.FieldId)
                                                                                        .Select(group4 => new { FieldId = group4.Key, FieldValues = group4 })
                                                                                        
                                                                                  })
                                                     }
                                    )
                        }
                    )
                    .ToList();

    Запостил: workgss, 29 Декабря 2009

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

    • Пиздатый сварщик сделал!
      Чтобы все всё сразу поняли.
      Ответить
    • я бы не сказал что это говнокод. Конечно, конструкция масштабная, но ведь именно для этого и придумали LINQ. А в остальном - имена переменных достаточно говорящие. Например, ChildListWithCondition достаточно сообщает что вообще это такое, форматирование присутствует, используются лямбды... Конечно, более логично разбить ее на части, однако тогда может потеряться логический смысл. В общем считаю что до говнокода не дотягивает
      Ответить
      • Говнокод здесь в том, что LINQ намешали с вызовом методов.. Группировка в LINQ виде была бы читабельнее и красивше.
        Ответить
    • Весь смысл как раз в громоздкости. Когда я это рефакторил, чтобы типизировать переменную, я создал 5 новых классов, а этот оператор стал двумя отдельными методами.
      Кстати ниже были еще методы сериализации и десериализации этих данных вручную. Тут места не хватит чтобы это запостить)))
      Ответить
      • да, в этом есть что-то. Но это, так сказать, элитный говнокод ))) По правде, многие даже так не пишут
        Ответить
    • У нас похожее есть...

      void IFileSystem.TransferFile(string from, string to, bool move)
      {
      var begin = move
      ? Lambda.Func(() => m_Watcher.OnFileRenaming(from, to))
      : Lambda.Func(() => m_Watcher.OnFileCreating(to));

      var end = move
      ? Lambda.Action(() => m_Watcher.OnFileRenamed(from, to))
      : Lambda.Action(() => m_Watcher.OnFileCreated(to));

      if (begin())
      {
      var customData = default(Dictionary<string, object>);
      if (!String.IsNullOrEmpty(from))
      {
      FileRecord record;
      customData = m_Data.Files.TryGetItem(from, out record) ? record.CustomData : null;
      if (move && record != null) // if "record == null", that file not found
      {
      RemoveFileFromProject(from);
      }//if
      }//if

      if (!String.IsNullOrEmpty(to) && !IsProjectFile(to))
      {
      AddFileToProject(to, customData);
      }//if

      end();
      }//if
      }
      Ответить
    • Я не понял другого - теперь модно меряться отступами?
      Ответить
    • Я подошёл к зеркалу, повертелся перед ним. Да, эти джинсы и вправду неплохо на мне смотрелись, а если ещё учесть чёрный пиджак... Мне и раньше говорили комплименты насчёт моей внешности, но - раз - это были девушки, два - это было не так пошло. Но мне понравилось... Так, хватит заниматься нарциссизмом - работать, работать и ещё раз работать!
      Ответить

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