Замена примитива объектом в доменной модели

Типы данных можно разделить на примитивные и пользовательские. Примитивы хранят некоторое скалярное значение, например число или символ (int, bool, char, decimal и др). Пользовательскими типами являются те, которые создает непосредственно программист, с целью сгруппировать несколько примитивов в одну логическую единицу и добавить к ним логику. Продолжить чтение «Замена примитива объектом в доменной модели»

Когда применять DDD

Предметно-ориентированное проектирование (Domain-driven Design, DDD) является совокупностью шаблонов и принципов, направленных на разработку проектов со сложной бизнес-логикой. Продолжить чтение «Когда применять DDD»

Классификация шаблонов разработки ПО

О пользе шаблонов сказано много. Знание и уместное их применение ускоряет разработку программного обеспечения, а также уменьшает стоимость сопровождения кода. Шаблоны позволяют программистам эффективно общаться между собой, так как вместо того, чтобы говорить: Ну нам нужно сделать такой объект, который добавляет поведение другому объекту на этапе выполнения программы, достаточно сказать: Тут нужен декоратор. По причине необъятности отрасли разработки ПО, существует не меньше сотни различных шаблонов. Попробуем их кратко классифицировать.

Продолжить чтение «Классификация шаблонов разработки ПО»

Какую пользу несет неизменяемость типа String

Тип String является неизменяемым типом данных, ведь он не может быть модифицирован после создания. Такая простая особенность открывает для разработчика большое количество преимуществ, характерных не только для строк, а и для других неизменяемых типов данных: структур, делегатов, собственных неизменяемых классов.

Продолжить чтение «Какую пользу несет неизменяемость типа String»

Рефакторинг статических классов

Использование статических классов со статическими методами внутри обладает серией недостатков. Одним из недостатков является появление в коде скрытых зависимостей, так как нельзя понять по интерфейсу либо конструктору некоторого класса зависит ли он от статики или нет. Статические классы нельзя использовать полиморфно. Также подобные классы часто выполняют роль таких себе Helper’ов, Manager’ов, Doer’ов, которым свойственно отвечать за все на свете и разрастаться до немыслимых размеров. Со всеми перечисленными минусами еще можно сосуществовать некоторое время. Однако когда дело доходит до необходимости написания юнит-тестов, от использования статики приходится отказаться в пользу других решений. Рассмотрим их.

Продолжить чтение «Рефакторинг статических классов»

Несколько причин проседания производительности в .NET приложениях

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

Продолжить чтение «Несколько причин проседания производительности в .NET приложениях»

Борьба с побочными эффектами

Простыми словами, побочный эффект или side effect это когда изменение некоторого свойства в одном месте программы непредсказуемо влияет на поведение другой ее части (или многих частей). Побочные эффекты являются ничем иным как багами, исследование которых может потребовать глубокого дебага, продолжительностью от нескольких минут до нескольких часов.
Продолжить чтение «Борьба с побочными эффектами»