суббота, 28 июля 2007 г.

C# 3.0 на пальцах

Сегодня я отмечу одну супер важную вещь, которая перевернёт всю идеологию объектного программирования. Это xLinq. SQL запросы для объектной модели. Этот синтаксический сахар грандиозное решение для простых программистов. Увеличивает качество кода в разы, а читаемость просто идеальная.

Выключите музыку, будьте внимательны.

Итак доменная модель. Как часто вам приходилось делать обход коллекции объектов и из них формировать новую? Не знаю как вам, но мне постоянно :)

Получалась следующая убогая конструкция


foreach(...)
...
if(...)
...
if(...)
...
newArray.Add(x);

Теперь этому положен конец.

Используем конструкцию:
var my = from r in people
where r.Age > 25
select r;
или
var my = people.Where(r => r.Age>25);

(что одно и тоже)

Здесь это главное сообразить где условия, где выборка
В примерах под переменной 'r' что-то типа итератора. То есть пробегаемся по массиву people, последовательно, текущая запись это 'r'. После обхода собираеются все записи удовлетворяющие условию и кладутся в 'my'.

То есть Linx это SQL для объектной модели. Просто класс!
Linq - это sql для объектов, xLinq - для xml, dLinq - для баз.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EmptyConsoleApplication
{
class Program
{
public class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
public int Age {get; set;}
}

static void Main(string[] args)
{
List people = new List
{
new Person {FirstName = "Scott", LastName="Guthrie", Age = 20},
new Person {FirstName = "Andre", LastName="Guthrie", Age = 27},
new Person {FirstName = "Peter", LastName="Guthrie", Age = 26}
};

//var my = people.Where(r => r.Age>25);

var my = from r in people
where r.Age > 25
select r;

foreach (var item in my)
{
Console.WriteLine(item.FirstName + ", " + item.LastName);
}
Console.ReadLine();
}
}
}


И в качестве проверки подумайте, что будет если

var my = from r in people
where r.Age > 25
select new Person { FirstName = r.FirstName, LastName = "UNKNOWN", Age = r.Age };


Для примера использовался виртуальныйы образ Orcas Beta 2 (около 5Гб), скачанный
Visual Studio 2008 Downloads (Напомню после VS2005.Net Beta 2 вышел релиз)

четверг, 12 июля 2007 г.

Visual Studio 2005 Express and Resharper 3.0

Подумалось, а почему бы не поставить Express и поверх него Resharper. А нельзя. В express версии нету Add-on'ов. Поэтому устновить Reshaper на неё нельзя.

Но сделал пару полезных выводов:
1. Visual Studio 2005 Express теперь бесплатная без ограничения.
2. Набивать мелкие задачки и примеры в ней приятнее. Летает.
3. Если ставить из инета, то не нужно тянуть 430 Мб :)

Ссылки:
- Всякие полезные примерчики
- Страница проекта
- Образ ISO (430 Мб)
- FAQ

среда, 11 июля 2007 г.

Spring.NET

Ron Jacobs from Microsoft interviews Mark Pollack to get the skinny on Spring.NET on a Virtual TechEd interview.

Насколько я понял, эта тулза позволит:
- декларативно (через xml) создавать объекты (то есть заменит фабрику)
- сделает прослойку от базы данных
- движок AOP

Если есть желание расширить -- жду комментарии, а то мне тяжело сообразить целесообразность этого движка.