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

    +113

    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
    const string newObjectName = "Новый объект";
    
            // формирует имя нового объекта
            string BuildNewObjectName()
            {
                var namesTaken = from node in objectAdapters where node.Name.Contains(newObjectName) select node.Name;
    
                int n = 0;
    
                // ищем максимальное число в конце имени
                if (namesTaken.Any())
                    n = namesTaken.Aggregate(n, (acc, name) =>
                        {
                            int current;
                            return (int.TryParse(name.Split().Last(), out current) && current > acc) ? current : acc;
                        });
    
                // возвращаем следующее
                return newObjectName + " " + (n+1).ToString();
            }

    Получение имени для нового объекта. Смесь различных техник. Не читаемо.

    Запостил: Lehox, 04 Августа 2010

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

    • я бы написал так:
      for (int i=0; i<int.MaxValue; i++)
      	if (!objectAddapters.Any(i => i.Node.Equals(newObjectName + i))
      		return newObjectName + i;
      throw new Exception("Shit happens O_o);

      хотя можно ещё оптимизировать (но кратко - так)
      Ответить

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