NDepend Blog

Improve your .NET code quality with NDepend

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

Log4net vs NLog: A Comparison of How They Affect Codebases

June 12, 2018 1 minutes read Ah, the old “versus” Google search.  Invariably, you’re in the research stage of some decision when you type this word into a search engine. ...
Erik Dietrich June 12, 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

In Defense of the SOLID Principles

April 24, 2018 2 minutes read From posts that politely offer their criticisms to others that outright deem them “for dummies,” it seems that bashing the SOLID principles is all...
Erik Dietrich April 24, 2018

Moq: A Detailed Look at Its Code Quality

April 17, 2018 7 minutes read In case you haven’t seen it, I’ve been doing a series of research-oriented posts for this blog.  This is going to be in the...
Erik Dietrich April 17, 2018

On the Superiority of the Visual Studio Dark Theme

April 10, 2018 2 minutes read When I downloaded the newest version of NDepend, something wonderful awaited me.  Was it support for the latest .NET Core version?  The addition of...
Erik Dietrich April 10, 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

Starting A Clean Architecture Example in C#

March 27, 2018 1 minutes read It’s time for the second part of our series about clean architecture. As promised in the first post, we’re going to show you a...
Erik Dietrich March 27, 2018

Functional C# Improves Your Design Without Making Your Code Cleaner, Exactly

March 20, 2018 2 minutes read Today I offer another one of the code research posts we’ve been doing.  If you want more backstory on the series, check out the...
Erik Dietrich March 20, 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

How to Measure Lines of Code? Let’s Count the Ways

February 27, 2018 1 minutes read There are a few ways to count lines of code, and they each have their advantages and disadvantages. Much of the differences come down...
Erik Dietrich February 27, 2018

Your Guide to Winning Arguments About Code

February 20, 2018 3 minutes read The whole “tabs versus spaces” thing occupies sort of an iconic position in the programmer world.  It represents the impossibility of winning arguments that...
Erik Dietrich February 20, 2018

Functional Programming Makes Your Code Not OO…And That’s It

February 13, 2018 2 minutes read Over the course of the fall and winter, I’ve been gaining momentum with code research posts.  Today, I bring that momentum to bear on...
Erik Dietrich February 13, 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

An Introduction to Clean Architecture

January 30, 2018 2 minutes read It seems to me that the topic of software architecture has attracted a lot of interest in the last few years. And among many...
Erik Dietrich January 30, 2018

Unit Tests Correlate With Desirable Codebase Properties

January 23, 2018 2 minutes read Today, I give you the third post in a series about how unit tests affect codebases. The first one wound up getting a lot...
Erik Dietrich January 23, 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

Delegation As a Developer: Building the Next You

January 9, 2018 3 minutes read “I love me some me!”   Yes, there’s more than just an ounce of truth in that statement said by the great NFL receiver...
Erik Dietrich January 9, 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

The Unit Test Effect Study, Refined

December 21, 2017 2 minutes read About a month ago, I wrote a post about how unit tests affect (and apparently don’t affect) codebases.  That post turned out to be...
Erik Dietrich December 21, 2017

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

December 14, 2017 2 minutes read Lack of cohesion of methods (sometimes abbreviated LCOM) is one of those things that occurs fairly high up on the software hierarchy of needs. ...
Erik Dietrich December 14, 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

Unit Testing Doesn’t Affect Codebases the Way You Would Think

November 22, 2017 2 minutes read I’ve just wrapped up another study.  (The last one was about singletons, if you’re interested.) This time, I looked at unit testing and the...
Erik Dietrich November 22, 2017