склеивание различных ObjectIdCollection

Автор Тема: склеивание различных ObjectIdCollection  (Прочитано 6758 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: склеивание различных ObjectIdCollection
« Ответ #15 : 15-11-2017, 12:21:59 »
Запугали наверное автора))
Не всегда стоит использовать Linq - иногда описание действий обычными циклами намного полезней, так как лучше читается и воспринимается код

Оффлайн bertАвтор темы

  • ADN OPEN
  • Сообщений: 32
  • Карма: 1
Re: склеивание различных ObjectIdCollection
« Ответ #16 : 15-11-2017, 12:36:07 »
нууу не то чтобы запугали), приходилось раньше использовать лямбда выражения на примитивном уровне, но откровенно говоря для меня это темный лес и работать с "классическим" кодом удобнее.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: склеивание различных ObjectIdCollection
« Ответ #17 : 15-11-2017, 12:36:27 »
Александр, провоцируешь холиварчик?  :D
Ну тут на вкус и цвет... Мне LINQ-выражения легко воспринимать. Возможно, потому, что я начинал с LISP.
У них есть пару недостатков в контексте использования в AutoCAD.
Один из них - более сложная отладка. Если возникает ошибка где-то в сложном запросе, то разбираться приходится дольше, чем при использовании стандартных циклов. Хотя, допускаю, что это только у меня такая проблема из-за незнания каких-то тонкостей.
А второй - нужно всегда держать в голове, что запросы LINQ являются отложенными. Для AutoCAD это особенно критично, т.к. в момент выполнения запроса вдруг может оказаться, что какой-то обрабатываемый объект уже давно закрыт или вообще удалён.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: склеивание различных ObjectIdCollection
« Ответ #18 : 19-11-2017, 01:15:58 »
Всем Здравствуйте, давно я не появлялся. Насчет обычных циклов и LINQ - не согласен,обычные циклы читаются лучше только если Linq совсем не владеешь, во всех остальных случаях - он всегда более читабельней. Сложную обработку через цикл невозможно сделать читабельной (если только не писать у каждой строки, что тут делается, или смотреть через отладчик). Мне "по наследству" досталась огроменная система автоматизации написанная на C# несколькими независимыми людьми в разное время - там кто во что горазд - каждый писал как умел (там на "одном экране" я встречал "перемешанные"  for i++.., foreach, linq, select к "датасету" и вызов sql процедуры которая через несколько вложенных "вьюшек" смотрит на те-же данные - пример не придуманный - у меня от него глаза на лоб полезли). В цикле "видно" только совсем простые обработки (типа "взять все и поделить"), остальное можно разобрать только через отладчик - и то даже не разобрать а увидеть что произойдет с входящими данными при таких-то изначальных условиях (с неведомым изначально набором переменных). Через linq запрос любой сложности раскрывается в читабельный вид.
Ну а я сам все так-же грешу F#'ом - там работа с коллекциями (генерация, преобразования, свертка, фильтрация, "перерождение" в другой тип коллекции - на чрезвычайно качественном уровне) - и foreach для меня это "мозоль" (про for я вообще молчу), даже если мне надо просто вытащить данные из "кривонаписанного" класса который не поддерживает вообще ничего - я в любом случае вначале переведу их в колекию подходящего типа и только потом буду с ними работать.

Оффлайн German

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
Re: склеивание различных ObjectIdCollection
« Ответ #19 : 19-11-2017, 21:45:04 »
Дима_, пользуясь случаем, раз уж тут такой оффтопик, не предложите свой вариант на F#?

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: склеивание различных ObjectIdCollection
« Ответ #20 : 26-11-2017, 14:09:24 »
Это смотря что есть на входе? - Seq.collect (...