Boxing и unboxing. Что это и почему это плохо?

Упаковка и распаковка значимых типов в C# — доступный для программиста механизм преобразования размерных типов данных языка C# из значимых в ссылочные и обратно через задействование свойств фундаментального базового класса Object. Как правило, значимые типы предпочтительнее для использования, чем ссылочные: для них не нужно…

Читать далее

Значимые и ссылочные типы. Спецификаторы аргументов функций ref, out

Ранее мы рассматривали следующие элементарные типы данных: int, byte, double, string, object и др. Также есть сложные типы: структуры, перечисления, классы. Все эти типы данных можно разделить на типы значений, еще называемые значимыми типами, (value types) и ссылочные типы (reference…

Читать далее

Что такое .NET? Что такое CLR? Что такое IL?

На сегодняшний момент язык программирования C# один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли. В настоящий момент на нем пишутся самые различные приложения: от небольших десктопных программок до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно миллионы пользователей. C#…

Читать далее

Что такое CI/CD?

Непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) представляют собой культуру, набор принципов и практик, которые позволяют разработчикам чаще и надежнее развертывать изменения программного обеспечения. CI/CD — это одна из DevOps-практик. Она также относится и к agile-практикам: автоматизация развертывания…

Читать далее

UniRx Реактивность

Всем привет! Давно уже хотел написать статью о UniRx на Unity3d. Начнем с небольшой философии RX программирования. Например, разрабатывая игру, мы создаем кнопку, наблюдаем событие клика этой кнопки и реагируем на это каким нибудь кодом. Реактивное программирование — это всё…

Читать далее

Dependency Injection

Dependency injection (DI) или внедрение зависимостей представляет механизм, который позволяет сделать взаимодействующие в приложении объекты слабосвязанными. Такие объекты связаны между собой через абстракции, например, через интерфейсы, что делает всю систему более гибкой, более адаптируемой и расширяемой. Нередко для установки зависимостей…

Читать далее

Основы алгоритмов

Алгоритм представляет собой последовательность шагов, которая призвана решить определенную задачу. Иными словами алгоритм — это способ решения этой задачи. В этом качестве алгоритм применяется для обозначения метода решения любых, в том числе и повседневных задач. Но в данном случае речь…

Читать далее

Приспособленец (Flyweight)

Паттерн Приспособленец (Flyweight) — структурный шаблон проектирования, который позволяет использовать разделяемые объекты сразу в нескольких контекстах. Данный паттерн используется преимущественно для оптимизации работы с памятью. В качестве стандартного применения данного паттерна можно привести следующий пример. Текст состоит из отдельных символов.…

Читать далее

Мост (Bridge)

Мост (Bridge) — структурный шаблон проектирования, который позволяет отделить абстракцию от реализации таким образом, чтобы и абстракцию, и реализацию можно было изменять независимо друг от друга. Даже если мы отделим абстракцию от конкретных реализаций, то у нас все равно все…

Читать далее

Заместитель (Proxy)

Паттерн Заместитель (Proxy) предоставляет объект-заместитель, который управляет доступом к другому объекту. То есть создается объект-суррогат, который может выступать в роли другого объекта и замещать его. Когда использовать прокси? Когда надо осуществлять взаимодействие по сети, а объект-проси должен имитировать поведения объекта…

Читать далее