TechLead Insights
9
подписчиков
Канал для обмена знаниями, опытом и перспективами, связанными с управлением разработкой ПО, архитектурой приложений, и стратегией эффективного лидерства в разработке ПО
Монолит против микросервисов: разбор архитектурных решений и выбор оптимального подхода для вашего проекта
В современном мире разработки веб-приложений выбор архитектуры становится критически важным для успеха проекта. Одни проекты начинают с монолита, а затем вынуждены переходить на микросервисную архитектуру из-за роста масштабов и усложнения бизнес-логики. Другие же сразу выбирают распределённую систему, чтобы обеспечить гибкость и масштабируемость. В этом посте мы разберём, в чем состоят ключевые различия между монолитом и микросервисами, каковы преимущества и недостатки каждого подхода, а также какие компромиссы и проблемы возникают при миграции...
Вредные советы для начинающих разработчиков C#
Если вы вдруг решили стать великим разработчиком C#, вот вам список вредных советов. Следуя им, вы гарантированно обеспечите своему коду головную боль, а себе – славу главного разрушителя продуктивности! Зачем вам эти скучные буквы? Вместо них пишите один огромный класс, который будет и базу данных обновлять, и PDF-документы генерировать, и еще отправлять письма . Чем больше ответственности у одного класса, тем лучше – ведь так его можно гордо назвать "МегаГлобальныйКласс". Зачем вам внедрение зависимостей? Создавайте все экземпляры классов внутри методов...
SOLID: Понимание Принципа Инверсии Зависимостей (DIP)
Мы подошли к последнему принципу из набора SOLID — Принципу Инверсии Зависимостей (Dependency Inversion Principle, DIP). Этот принцип является ключевым для создания гибких и легко расширяемых систем, позволяя уменьшить зависимость высокоуровневых модулей от деталей реализации. Определение DIP: Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. Проще говоря, это...
SOLID: Понимание Принципа Разделения Интерфейса (ISP)
Продолжая наше путешествие по принципам SOLID, мы подошли к четвертому принципу — Принципу Разделения Интерфейса (Interface Segregation Principle, ISP). Этот принцип помогает разработчикам создавать более гибкие и поддерживаемые системы, особенно когда дело касается работы с интерфейсами и абстракциями. Определение ISP: Клиенты не должны зависеть от интерфейсов, которые они не используют. Проще говоря, интерфейсы должны быть разделены на более специфичные, чтобы клиенты зависели только от тех методов, которые им действительно нужны...
SOLID: Понимание Принципа Подстановки Барбары Лисков (LSP)
Продолжая наше знакомство с принципами SOLID, теперь мы рассмотрим третий принцип — Принцип Подстановки Барбары Лисков (Liskov Substitution Principle, LSP). Этот принцип играет ключевую роль в построении надежных и гибких объектно-ориентированных систем. Определение LSP: Объекты в программе должны быть заменяемы экземплярами их подтипов без нарушения корректности работы программы. Проще говоря, если у вас есть класс Base, и класс Derived наследуется от Base, то вы должны иметь возможность использовать Derived вместо Base без каких-либо проблем...
SOLID: Понимание Принципа Открытости/Закрытости (OCP)
Если вы интересуетесь разработкой программного обеспечения, вы, вероятно, слышали о принципах SOLID. Это пять основополагающих принципов объектно-ориентированного программирования, которые помогают создавать гибкие, масштабируемые и поддерживаемые системы. Сегодня мы рассмотрим второй принцип — Принцип Открытости/Закрытости (Open/Closed Principle, OCP). Определение OCP: Программные сущности (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что вы должны иметь возможность расширять поведение системы, не изменяя существующий код...
SOLID: Понимание Принципа Единственной Ответственности (SRP)
Если вы когда-нибудь сталкивались с разработкой программного обеспечения, возможно, вы слышали термин "SOLID". Это набор из пяти принципов, которые помогают разработчикам создавать более гибкие, масштабируемые и поддерживаемые системы. Сегодня мы погрузимся в первый из этих принципов — Принцип Единственной Ответственности (Single Responsibility Principle, SRP). Определение SRP: У класса должна быть только одна причина для изменения. Это означает, что каждый класс или модуль в вашей программе должен отвечать за одну и только одну часть функциональности...
Шаблоны успеха: как паттерны проектирования делают ваш код лучше
В мире разработки программного обеспечения понятие "паттерны проектирования" занимает особое место. Это проверенные временем решения общих проблем, с которыми сталкиваются разработчики при создании приложений. Будучи архитектором на .NET с 15-летним стажем, я неоднократно убеждался в важности знания и правильного применения этих паттернов для создания масштабируемого, поддерживаемого и эффективного кода. В процессе развития программирования стало очевидно, что многие проблемы повторяются из проекта в проект...
Паттерн Null Object в C#: Когда отсутствие объекта — это решение
Null Object Pattern (паттерн «Нулевой объект») — это поведенческий шаблон проектирования, который предоставляет объект со стандартным нейтральным поведением вместо null. Вместо того чтобы возвращать null и заставлять клиентский код проверять на наличие значения, используется специальный объект, который не выполняет никаких действий или выполняет действия по умолчанию. В объектно-ориентированном программировании часто возникает ситуация, когда методы или функции могут возвращать null вместо объекта...
Microservices: Как работает связка API Gateway, Service Discovery и микросервисы: подробный разбор
В современном микросервисном архитектурном стиле взаимодействие между клиентами и сервисами организуется с помощью нескольких ключевых компонентов: API Gateway, Service Discovery и сами микросервисы. Рассмотрим полный жизненный цикл запроса, описывая, как эти компоненты взаимодействуют между собой. API Gateway (например, Ocelot) является критически важным компонентом в микросервисной архитектуре. Он выступает в роли единой точки входа для всех клиентских запросов к системе микросервисов...
Clean Code: Искусство создания чистых методов (Часть 2)
Одним из ключевых аспектов чистого кода является написание "правильных" методов. Правильно спроектированные методы делают код более читабельным, поддерживаемым и простым для тестирования. Для себя я выделил 9 основных принципов написания качественных методов.
1. Понятные Имена
Используйте осмысленные и самодокументирующиеся имена методов, которые отражают их назначение.
Плохо:
public void DoStuff()
{
// Логика метода
}
Хорошо:
public void CalculateMonthlyRevenue()
{
// Логика расчета ежемесячного дохода
}
2...