О сложном просто или программирование на .NET
Построение сложных и не очень сложных систем задача не тривиальная. Причем сложность разработки увеличивается прямо пропорционально числу разработчиков, которые в ней участвуют. При таких условиях разработки, принято придерживаться предопределённых правил, шаблонов и договоренностей, не говоря уже о паттернах проектирования, общеизвестных методологий по разработки ПО и, вообще, принципах ООП.

Очень часто в своей работе мне приходилось использовать перечисления (Enum) в качестве информации о состоянии объекта. И всё бы вроде как хорошо, но есть некоторое неудобство, при таком подходе логика по проверке состояния (validation) объекта при смене статуса "размазывалась" по всей системе. И часто получалось, что отследить все правила перехода от одного состояния к другому практически непосильная задача, особенно если проект разрабатывает группа программистов.

Никому никогда не говорил и не буду говорить, что программировать легко, потому что это неправда. Программировать совсем не просто!
Допустим, что вы потратили не один месяц на написание своей программы: поиск идеи, изучение рынка, поиск конкурентов, программирование, отладка, тестирование, публикация и, возможно, еще какие-нибудь дополнительные телодвижения. В общем, вы проделали не малый путь, но смею вас заверить, что это даже не половина пути к финансовому успеху программного продукта. Это всего лишь начало большого приключения под названием "Монетизация кода".
Особых споров по этому поводу нет, но дабы расставить все точки на "Ё" поговорим на эту тему.
Так получилось, что у меня есть некоторый опыт по разработки приложений. Начала отсчета 2001 год, то есть когда C#.NET был у истоков. На сегодняшний день, в мой адрес звучат множество вопросов: Какие технологии актуальны? Какую архитектуру из каких технологий построить? Перспективы развития той или иной технологии? В общем, в этой статье поговорим про выбор технологии.

Что важнее при разработки программного обеспечения: скорость или качество? Как объяснить заказчику, что “быстрый” сыр бывает только в мышеловке? Какое решение выбрать? Какие бывают большие программы? Поговорим об этом в этой статье.

Есть в языке С# свои вкусности, или как обычно выражаются программисты - "синтаксический сахар". Так вот об этом "синтаксическом сахаре" я и хочу поведать.
Func и Action обобщенные делегаты были введены в .NET Framework начиная с NET 3.5. Они обеспечивают гибкость делегатов с общими параметрами. Делегат Func предназначен для инкапсуляции метода, который принимает в качестве параметров от нуля для четырех аргументов и возвращает значение. Что же касается делегата Action, то единственное отличие его от Func – это то, что Action возвращает процедуру.
Мне в последнее время очень часто встречаются программисты, которые не только используют в обычной “программной” жизни структуры (struct), но вообще, ничего не знают об этом объекте. И зачастую, для простоты своей "программной" жизни используют всегда классы (class). В этой статье я бы хотел в очередной раз остановиться на различиях между структурами и классами.