Самое мощное и неожиданное преимущество Linq в .NET OOP / D? - PullRequest
1 голос
/ 11 января 2010

С тех пор как я узнал о Linq и приобрел в нем опыт, я все больше и больше склонялся к нему. Меняются мои представления о занятиях. Некоторые из этих изменений были ожидаемыми (например, использование коллекций больше), но часто неожиданными (например, получение исходных данных для класса в виде XElement, а иногда просто их сохранение, обработка их лениво.)

Что является самым мощным и неожиданным преимуществом Linq для .NET OOP / D? Я имею в виду Linq-to-objects и Linq-to-xml в частности, но также включаю Linq-to-Entities / SQL, поскольку это изменило стратегию вашего класса.

Ответы [ 2 ]

1 голос
/ 11 января 2010

Мне кажется, что код проще поддерживать и легче проверить по сравнению с решением для хранимых процедур SQL.

Комбинируя LINQ с расширениями, я получаю что-то вроде (возможно, следует использовать какой-нибудь интерфейс Fluent .....)

  return source.Growth().ShareOfChangeDate();

, где Growth и ShareOfChageDate - это расширения, которые я легко могу выполнить для модульных тестов

и, как говорит Л.Бушкин, строку выше я могу представить клиенту, когда мы будем обсуждать

Вопросы Я чувствую, что получаю меньше контроля над сгенерированным SQL, и это немного волшебство, чтобы найти проблемы с производительностью .....

1 голос
/ 11 января 2010

Я заметил несколько существенных преимуществ использования LINQ:

  • Поддерживаемость - намного проще понять, что делает код, когда вы читаете семантическое преобразование с использованием LINQ, чем некоторые запутанные циклические конструкции, написанные от руки разработчиком.

  • Производительность - Из-за отложенного и потокового выполнения LINQ вы часто получаете код, который работает лучше - либо распределяя рабочую нагрузку, либо позволяя избежать ненужных преобразований (особенно когда только подмножество результатов потребляется). В будущем, когда многоядерная обработка станет более значимой, я ожидаю, что многие методы LINQ могут развиться для поддержки собственной параллельной обработки (например, многоядерной сортировки), что должно помочь поддерживать масштабируемость приложений .NET в будущем для нескольких кодов.

Есть несколько других приятных преимуществ:

  • Осведомленность генераторов итераторов: Как только разработчики узнают о LINQ, некоторые из них узнают о том, как он работает. Это помогает генерировать понимание синтаксиса yield return в C #, который является мощным способом написания кратких и правильных итераторов последовательности.

  • Фокус на бизнес-задачах: LINQ позволяет разработчикам сосредоточиться на решении основных бизнес-задач, а не пытаться оптимизировать циклы и алгоритмы для выполнения в наименьшем количестве циклов или использовать наименьшее количество строки кода. Это выходит за рамки просто производительности библиотеки мощных подпрограмм преобразования последовательностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...