Оптимизация производительности .NET WEB приложения от Ангуляра до MS SQL

Современные .NET приложения обычно состоят из нескольких уровней: клиентская логика, веб-фреймворк, бизнес-логика, технология ORM и база данных. Например, конкретный стек может включать в себя Vue.js, ASP.NET WebAPI, C#, Entity Framework, MSSQL либо React.js, ASP.NET Core, NHibernate, C#, PostgreSQL. Если приложение во время своей работы подтормаживает, то проблемы с производительностью могут быть скрыты на одном конкретном уровне или одновременно на нескольких. Продолжить чтение «Оптимизация производительности .NET WEB приложения от Ангуляра до MS SQL»

Обзор основных метрик программного кода

Метрики программного кода, в отличие от Agile или Performance метрик, несут истинную ценность только для программиста. Продолжить чтение «Обзор основных метрик программного кода»

Шаблоны проектирования: Rules

Сложная логика приложения часто приводит к нагромождению условных операторов в разных частях проекта. С точки зрения метрик ухудшаются такие показатели как Cyclomatic complexity и Maintainability index, с точки зрения принципов проектирования могут нарушаться SRP, OCP, DRY, а простыми словами — страдают читабельность кода и простота внесения в него изменений.

Продолжить чтение «Шаблоны проектирования: Rules»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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