NDepend Blog

Improve your .NET code quality with NDepend

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

Linq Tutorial: A Complete Beginner’s Gentle Introduction

September 18, 2018 1 minutes read There was a time when Linq was a mystery to me. But, now that I’ve learned how to use it, I don’t know how...
Erik Dietrich September 18, 2018

Programming to an Interface: A Simple Explanation

August 21, 2018 1 minutes read As an architect, you know that programming to an interface is good. It’s what everyone should do. But what does that mean? And why...
Erik Dietrich August 21, 2018

What Is a Good Unit Test? 5 Must-Haves

August 14, 2018 1 minutes read In this day and age, unit testing isn’t as controversial as it once was. Sure, you still see the occasional inflammatory, clickbait-y, confrontational “unit...
Erik Dietrich August 14, 2018

Declarative Programming in Depth

July 3, 2018 1 minutes read Most people that start programming learn to program in an imperative way. Shortly after, they will probably learn a declarative language too. Many developers...
Erik Dietrich July 3, 2018

Software Architecture: The 5 Patterns You Need to Know

June 26, 2018 1 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 June 26, 2018

Continuing Our Clean Architecture Example in C#

June 19, 2018 1 minutes read After a somewhat long delay, it’s time to finally continue our series on clean architecture. This is the second post in the inner series...
Erik Dietrich June 19, 2018

Use NDepend to Measure How SOLID Your Code Is

June 5, 2018 1 minutes read Not that long ago, we published a post defending the SOLID principles of object-oriented design. In today’s post, we take it a step further: we’re going...
Erik Dietrich June 5, 2018

Imperative Programming in Depth

May 29, 2018 1 minutes read Programming languages come in all shapes and sizes: interpreted vs. compiled, weak vs. strong typing, low-level vs. high-level, terse vs. expressive… There are many...
Erik Dietrich May 29, 2018

Separation of Concerns, Explained

May 22, 2018 2 minutes read Software development is a very young field, particularly when you compare it to, say, medicine or law. Despite this, there’s no shortage of wisdom...
Erik Dietrich May 22, 2018

What Makes a Codebase Acquirable?

May 15, 2018 1 minutes read What makes a codebase acquirable? This is the rare question that affects software developers, managers, and executives in a surprisingly similar way.  And that’s...
Erik Dietrich May 15, 2018

A Look at .NET Core 2.1

May 8, 2018 6 minutes read The .NET Framework has certainly been through many changes since it was introduced by Microsoft in 2002. Arguably, .NET Core is the biggest change....
Erik Dietrich May 8, 2018

Null Is Evil. What’s the Best Alternative? Null.

May 1, 2018 1 minutes read “Null is evil.” If you’ve been a software developer for any reasonable length of time, I bet you’ve come across that statement several times....
Erik Dietrich May 1, 2018

C# 8.0 Features: A Final Glimpse Of The Future

April 3, 2018 1 minutes read It was not that long ago when we published our first post about the future of C# 8.0 and the probable features it’s getting....
Erik Dietrich April 3, 2018

C# Immutable Types: Understanding the Attraction

March 13, 2018 2 minutes read As I’m sure you’re aware, the word immutable means “unchanging.” So, C# immutable types obviously refers to a C# type that can’t change. What...
Erik Dietrich March 13, 2018

CQRS: Understanding From First Principles

March 6, 2018 1 minutes read There seems to be no end to the choices you have for architecture when building an application. You don’t want to fall victim to cargo...
Erik Dietrich March 6, 2018

C# 8.0 Features: Another Glimpse of the Future

February 6, 2018 1 minutes read About two months ago, we talked about some of the (probable) features we’ll be getting with C# 8.0. The post was well received and...
Erik Dietrich February 6, 2018

Value Objects: A Tool for Self-Documented Code and Fewer Errors

January 16, 2018 1 minutes read Have you ever heard of value objects? I bet you have. Even though they’re talked about a lot less than I’d like, they’re still...
Erik Dietrich January 16, 2018

Cargo Cult Programming Is the Art of Programming by Coincidence

December 28, 2017 2 minutes read I first learned about cargo cult programming a few years ago. I remember thinking back then, “What a strange name for a programming-related concept.”...
Erik Dietrich December 28, 2017

C# 8.0 Features: A Glimpse of the Future

November 30, 2017 1 minutes read It’s been almost 20 years since Microsoft released the first version of the C# language. From its inception—when some unjustly deemed it a mere...
Erik Dietrich November 30, 2017

Code Reuse is Not a Good Goal

November 2, 2017 2 minutes read Wait, wait, wait.  Put down the pitchforks and listen for a minute.  You’re probably thinking that I’m about to tout the “virtues” of copy/paste...
Erik Dietrich November 2, 2017

C# Tools to Help with Your Code Quality

September 28, 2017 1 minutes read Over the years, one of the things I’ve come to love about the .NET ecosystem is the absolute abundance of tools to help you....
Erik Dietrich September 28, 2017

Marker Interface Isn’t a Pattern or a Good Idea

September 7, 2017 3 minutes read Today, I have the unique opportunity to show you the shortest, easiest code sample of all time.  I’m talking about the so-called marker interface....
Erik Dietrich September 7, 2017

Using NDepend To Get Going Quickly on C# Projects

August 24, 2017 2 minutes read Assuming you’ve had at least one job working on one or more C# projects, let me paint a familiar picture for you.  I’m talking...
Erik Dietrich August 24, 2017

What the Singleton Pattern Costs You

August 17, 2017 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 August 17, 2017

Our experience with using third-party libraries

August 3, 2017 5 minutes read NDepend is a tool that helps .NET developers write beautiful code. The project was started in April 2004. It is now used by more...
NDepend August 3, 2017

C# Version History: Examining the Language Past and Present

July 6, 2017 1 minutes read I still remember my first look at C# in the early 2000s.  Microsoft had released the first major version of the language.  I recall...
Erik Dietrich July 6, 2017

In Defense of Using Your Users as Software Testers

June 15, 2017 3 minutes read In most shops of any size, you’ll find a person that’s just a little too cynical.  I’m a little cynical myself, and we programmers tend...
Erik Dietrich June 15, 2017

Fixing Your Tangled Dependency Graph

June 1, 2017 1 minutes read I’ve written before about making use of NDepend’s dependency graph.  Well, indirectly, anyway.  In that post, I talked about the phenomenon of actual software architecture...
Erik Dietrich June 1, 2017

Is There a Correct Way to Comment Your Code?

May 18, 2017 2 minutes read Given that I both consult and do a number of public things (like blogging), I field a lot of questions.  As a result, the...
Erik Dietrich May 18, 2017