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

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
  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 Lehox, (Updated )

Комментарии (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);

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

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

Где здесь C++, guest?!

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


    8