Applying OOP in ASP.NET Core

This post explores the four pillars of OOP in ASP.NET Core: encapsulation, abstraction, inheritance, and polymorphism. It provides practical examples and explains how these principles improve code maintainability, testability, and architecture in modern C# web APIs.

August 10, 2025 · Last modified: September 3, 2025 · 8 min

Refactoring Code for Better Coupling and Cohesion

TL;DR: High cohesion means classes focus on one job. Low coupling means classes don’t depend too much on each other. When I refactor messy code, these two principles guide every decision I make. Why I Focus on Cohesion and Coupling When Refactoring After 10+ years of building enterprise applications, I’ve inherited my fair share of messy codebases. The pattern is always the same: tangled classes doing too much, components that break when you touch something seemingly unrelated, and tests that require half the application to run. ...

August 4, 2025 · Last modified: September 19, 2025 · 7 min

Why Async Can Be Slower in Real Projects?

Async/await is powerful but overused. This guide breaks down async misconceptions, shows real enterprise use cases, and gives you a practical decision framework for async in C#.

August 1, 2025 · Last modified: August 11, 2025 · 14 min

Dependency Inversion: Boost C# Code Quality

TL;DR DIP means depend on abstractions, not concrete implementations. Use interfaces and dependency injection to decouple business logic from details. DIP improves testability, flexibility, and maintainability in C# code. Avoid leaky abstractions, unnecessary interfaces, and service locator anti-patterns. Use C# 12 primary constructors and .NET 8 DI features for clean, modern architecture. The Dependency Inversion Principle helps you turn rigid, tightly-coupled code into flexible, testable systems. Rather than depending on concrete implementations, your high-level modules rely on abstractions. This goes beyond dependency injection, it’s about changing the direction of control flow. ...

July 25, 2025 · Last modified: September 20, 2025 · 13 min

Unit & Integration Testing for ASP.NET Middleware

This guide covers how to effectively test ASP.NET Core middleware using unit tests, integration tests, and mocks. It includes examples of common middleware patterns, how to handle dependencies, and best practices for ensuring your middleware behaves correctly in production.

July 20, 2025 · Last modified: September 20, 2025 · 13 min

Interface Segregation Principle: No Unused Methods

TL;DR ISP means interfaces should be small and focused on client needs. Avoid “God” interfaces that force clients to implement unused methods. Split large interfaces into cohesive, role-based interfaces. Use C# 12 features like default interface methods for flexibility. ISP improves maintainability, testability, and reduces coupling. Refactor fat interfaces by extracting related methods into separate interfaces. Interface Segregation Principle stops you from creating huge interfaces that force clients to implement methods they’ll never use. When interfaces get too big, your implementations end up filled with empty methods and unnecessary dependencies. ...

July 18, 2025 · Last modified: September 20, 2025 · 12 min

Top 11 EF Core Mistakes That Kill Performance

A comprehensive guide to diagnosing and fixing common EF Core performance issues, with practical code examples and real-world performance improvements.

July 17, 2025 · Last modified: September 20, 2025 · 22 min

Prefer Interfaces Over Abstract Classes in C#

Learn why preferring interfaces over abstract classes in C# improves code flexibility, testability, and maintainability for robust .NET applications.

July 16, 2025 · Last modified: September 19, 2025 · 10 min

C# IEquatable: Custom Equality for .NET Devs

Master IEquatable in C# to optimize equality checks, improve collection performance, and eliminate boxing overhead. Essential for value types and collections.

July 16, 2025 · Last modified: September 20, 2025 · 9 min

C# Polymorphism with Template, Strategy, Visitor

Learn how polymorphism in C# using Template Method, Strategy, and Visitor patterns makes your code flexible, maintainable, and reusable.

July 16, 2025 · Last modified: September 19, 2025 · 5 min
×