NDepend Blog

Improve your .NET code quality with NDepend

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

Things Everyone Forgets Before Committing Code

May 4, 2017 2 minutes read Committing code involves, in a dramatic sense, two universes colliding.  Firstly, you have the universe of your own work and metaphorical workbench.  You’ve worked...
Erik Dietrich May 4, 2017

What DevOps Means for Static Analysis

April 13, 2017 1 minutes read For most of my career, software development has, in a very specific way, resembled mailing a letter.  You write the thing, and then you...
Erik Dietrich April 13, 2017

Why Expert Developers Still Make Mistakes

April 6, 2017 7 minutes read When pressed, I bet you can think of an interesting dichotomy in the software world.  On the one hand, we programmers seem an extraordinarily...
Erik Dietrich April 6, 2017

Exploring the Technical Debt In Your Codebase

March 3, 2017 1 minutes read Recently, I posted about how the new version of NDepend lets you compute tech debt.  In that post, I learned that I had earned...
Erik Dietrich March 3, 2017