О сложном просто или программирование на .NET
Как-то не получилось у меня с первого раза найти информацию о том, как же надо применять SOLID на практике. Вот и решил самостоятельно написать статью, но...

Как часто вам необходимо знать, какие действия были произведены с определенной сущностью? Например, в какой момент поменялось значение какого-либо свойства?

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

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

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

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