вторник, 17 апреля 2012 г.

Полуавтоматическая генерация кода

Сегодня я хочу поговорить об автоматической генерации кода C#. Например, свойства в классах, описывающих сущности предметной области, обычно описываются по совершенно одинаковой схеме. И мне элементарно лениво писать для каждого примитивного свойства одинаковые конструкции. Немного спасает применение сниппетов и активных шаблонов, но когда приходит нужда что-то поменять в этой схеме, то приходится перелопачивать кучу кода. Так почему бы это однообразие не генерировать автоматически в процессе сборки?
В какой-то момент кинетическая энергия творчества ненадолго пересилила потенциальную энергию лени, и результатом этого стала маленькая библиотечка для автоматической генерации некоторых исходных файлов программы на основе внешних данных. Приглашаю под кат всех ленивых (в хорошем смысле этого слова) разработчиков на C#.

суббота, 10 марта 2012 г.

Представление метаданных с помощью перечислений

Что такое метаданные? Это некоторая описательная информация, которая используется алгоритмами программы. Например, это могут быть названия таблиц и полей базы данных, названия ключей реестра, в которых хранятся требуемые параметры, или названия свойств объектов, к которым обращается программа. Я хочу рассказать, как с помощью методов-расширений и атрибутов можно удобно использовать перечисления для представления метаданных.

понедельник, 27 февраля 2012 г.

Не забудьте нажать релиз!

.NET чудесно интегрирована с COM. Разработчик может без лишних усилий, легко и просто загружать и использовать в своих программах COM объекты из других приложений. Но разница в способе управления памятью (сборщик мусора .NET и подсчет ссылок в COM) иногда подкидывает неприятные сюрпризы.

вторник, 31 января 2012 г.

Полезные расширения для работы с папками

Несмотря на стремительное развитие облачных технологий, простому программисту .NET никуда не деться от работы с файловой системой. Благодаря классам из пространства имен System.IO, работа с файлами и папками довольно проста и прозрачна. Но, все таки, некоторые простые (и довольно востребованные) операции требуют заметного количества манипуляций. Предлагаю вашему вниманию несколько методов-расширений для класса DirectoryInfo, которые слегка дополнят возможности по работе с папками.

пятница, 20 января 2012 г.

Расширения для класса FrameworkElement

Разработчики WPF (и Silverlight) меня поймут. Microsoft создала мощную технологию для создания пользовательского интерфейса декларативным образом. Но, к сожалению, не все можно реализовать декларативно. Приходится иногда и код месить. И вот тут ожидает неприятный сюрприз. Концептуально понятная иерархия интерфейсных элементов оказывается недоступной напрямую, а чтобы достучаться до неё приходится обращаться к классу VisualTreeHelper. Это, бесспорно, очень нужный и полезный класс, но использование методов типа GetChildrenCount() и GetChild() в эпоху LINQ несколько раздражает.

суббота, 14 января 2012 г.

Что такое искусство программирования?

imageНекоторое время назад я прочитал на хабре статью “Искусство программирования?”. Эта статья спровоцировала большую дискуссию в хабра-сообществе. У меня нет большого желания участвовать в дискуссии, но на определенные мысли эта статья меня натолкнула. Так является ли программирование видом искусства?

понедельник, 9 января 2012 г.

Командная разработка

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