NDepend Blog

Improve your .NET code quality with NDepend

An Introduction to Clean Architecture

May 25, 2026 3 minutes read Clean Architecture in C# and .NET: A Detailed Introduction It seems to me that the topic of software architecture has attracted a lot of...
Erik Dietrich May 25, 2026

Cyclomatic Complexity in C#: Everything You Need to Know

May 25, 2026 9 minutes read Cyclomatic Complexity (or CC) in C# is a code metric that counts the number of linearly independent execution paths through a method. Concretely, it...
Erik Dietrich May 25, 2026

A Guide to Code Coverage Tools for C# in 2026

May 17, 2026 2 minutes read In this post, we’ll walk through 8 different .NET code coverage tools and list their features to help you make a decision. The tools...
Erik Dietrich May 17, 2026

Lack of Cohesion of Methods: What Is This And Why Should You Care?

May 14, 2026 2 minutes read Lack of cohesion of methods (usually shortened to LCOM) is one of those things that sits fairly high up on the software hierarchy of...
Erik Dietrich May 14, 2026

Visual Studio Enterprise vs. Professional

May 12, 2026 2 minutes read If you write .NET code for a living, you might spend your day inside Visual Studio. The catch is that “Visual Studio” isn’t one...
Erik Dietrich May 12, 2026

Onion Architecture: Going Beyond Layers

April 25, 2026 1 minutes read So you’ve read about the Onion Architecture and think you get it. There are layers in this architecture. They’re onion-like. And they make your...
Erik Dietrich April 25, 2026

Hexagonal Architecture: What Is It and How Does It Work?

April 23, 2026 9 minutes read Hexagonal architecture is a model — or pattern, if you prefer — for designing software applications around a simple idea: put inputs and outputs...
Erik Dietrich April 23, 2026

Domain-Driven Design Demystified

April 4, 2026 1 minutes read Domain-Driven Design, usually shortened to DDD, is a software design approach that puts the business problem at the center of the code. Instead of...
Erik Dietrich April 4, 2026

REST vs. RESTful: The Difference and Why the Difference Doesn’t Matter

April 2, 2026 1 minutes read REST API is one of the most popular APIs in the web development community. Most teams reach for it before anything else, and most...
Erik Dietrich April 2, 2026

Software Architecture: The 5 Patterns You Need to Know

February 26, 2026 2 minutes read When I was attending night school to become a programmer, I learned several design patterns: singleton, repository, factory, builder, decorator, etc. Design patterns give...
Erik Dietrich February 26, 2026

Layered Architecture: Still a Solid Approach

February 7, 2026 1 minutes read Layered architecture gets a lot of flack. Even though it’s still the most prevalent architecture, we view it as an anti-pattern. It’s old, not...
Erik Dietrich February 7, 2026

What the Singleton Pattern Costs You

July 17, 2025 2 minutes read Do you use the singleton pattern?  If not, I’m assuming that you either don’t know what it is or that you deliberately avoid it....
Erik Dietrich July 17, 2025

Computing Technical Debt with NDepend

February 16, 2025 2 minutes read For years, I have struggled to articulate technical debt to non-technical stakeholders.  This struggle says something, given that technical debt makes an excellent metaphor...
Erik Dietrich February 16, 2025

NDepend vs. ReSharper

October 14, 2024 1 minutes read Not too long ago, someone asked me for a comparison of ReSharper (commonly and affectionately abbreviated R#) and NDepend.  I didn’t really grok the...
Erik Dietrich October 14, 2024

Avoid Technical Debt with NDepend

July 14, 2024 2 minutes read The term “technical debt” has become ubiquitous in the programming world.  In the most general sense, it reflects the idea that you’re doing something...
Erik Dietrich July 14, 2024

A Test Coverage Primer for Managers

May 27, 2024 5 minutes read Managing Blind Let me see if I can get in your head a little bit.  You manage a team of developers and it goes...
Erik Dietrich May 27, 2024

Improve Your Code Review Game with NDepend

April 21, 2024 3 minutes read Code review is a subject with which I’m quite familiar.  I’m familiar first as a participant, both reviewing and being reviewed, but it goes...
Erik Dietrich April 21, 2024

Why Should Managers Care About Static Analysis?

March 22, 2024 5 minutes read I’d like to talk a bit today about how, if you’re a dev manager for a team or teams that are responsible for .NET...
Erik Dietrich March 22, 2024

Managing to Avoid Cobras

March 3, 2024 2 minutes read Incentives are a funny thing.  Done well, they can spur your team to productivity and career-advancing, win-win situations.  Done not so well, they can...
Erik Dietrich March 3, 2024

Following the Software Architecture Career Path

January 10, 2024 3 minutes read I can recall a certain day in my career with remarkable clarity. I say remarkable because this happened well over a decade ago, when...
Erik Dietrich January 10, 2024

Software Architecture Document? Do You Need One?

November 1, 2023 1 minutes read In the spirit of the Agile Manifesto, we’ve reduced our dependence on software documentation. In some ways, this has improved our lives. And in...
Erik Dietrich November 1, 2023

Announcing the Singleton Challenge

September 21, 2023 2 minutes read About a month ago, I made a post about what the singleton pattern costs you. Although I stated my case in terms of trade-offs...
Erik Dietrich September 21, 2023

Service Oriented Architecture: A Dead Simple Explanation

January 8, 2019 1 minutes read Service-oriented architecture (SOA) has been with us for a long time. The term first appeared in 1998, and since then it’s grown in popularity....
Erik Dietrich January 8, 2019

C# Features: An Exhaustive List of the Best Ones

December 18, 2018 1 minutes read The first post I wrote for the NDepend blog was about C# 8.0 features. That post inspired a sequel, followed by the series’ final...
Erik Dietrich December 18, 2018

Coupling in Programming: What This Means and How Not to Get Burned

December 4, 2018 1 minutes read What is coupling in programming? Is it something we want to avoid when we design and write code? If so, why? And more importantly,...
Erik Dietrich December 4, 2018

Mentoring Software Developers as an Architect

November 27, 2018 1 minutes read A while back we discussed the unique career path architects have to travel. We wrote that article for developers who want to advance their...
Erik Dietrich November 27, 2018

Self Documenting Code vs. Comments? Turns Out It’s Both or Neither

November 20, 2018 1 minutes read It’s been about a month since my last research post, and I’ve been musing about the next topic.  What should it be?  Well, I’ve...
Erik Dietrich November 20, 2018

Should Architects Write Code? You Bet They Should!

October 30, 2018 1 minutes read There’s a common misconception that’s permeated our profession: Architects don’t need to write code to do their jobs. Now, this may seem like a...
Erik Dietrich October 30, 2018

When Is It Okay to Use a C# Partial Class?

October 16, 2018 1 minutes read Today’s post attempts to answer a very simple and straightforward question: “When is it OK to use a C# partial class?” And the answer as...
Erik Dietrich October 16, 2018

Extension Methods and the Decline of Traditional OOP

October 9, 2018 1 minutes read A bunch of years ago, I wrote a post on my own personal blog titled, “Why I Don’t Like C# Extension Methods.”  Over the...
Erik Dietrich October 9, 2018