NDepend Blog

Improve your .NET code quality with NDepend

Simplifying a Visual Studio extension menu: A Case Study

April 2, 2019 4 minutes read NDepend version 2019.2.1 has just been released. This new version proposes a simplified menu for the NDepend Visual Studio extension. Before going further I...
NDepend April 2, 2019

An in-depth analysis of .NET Core 3.0 support for WPF and Winforms APIs

February 28, 2019 5 minutes read .NET Core 3.0 will be RTM soon and it supports WPF and Winforms APIs. In my last post I’ve been exploring .NET Core 3.0...
NDepend February 28, 2019

Exploring .NET Core 3.0 new API

February 21, 2019 9 minutes read .NET Core 3.0 is representing a major step for the .NET community. It is interesting to analyze what’s new in the API directly from...
NDepend February 21, 2019

Advanced Code Search : A Case Study

January 16, 2019 3 minutes read This morning I stumbled on a complex test to write. The need was to create and show a custom Form (written with Windows Form)...
NDepend January 16, 2019

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

Domain-Driven Design Demystified

November 6, 2018 1 minutes read Domain-driven design, or DDD, is a software design methodology aimed at producing better software. Engineers achieve this by working closely with domain experts during...
Erik Dietrich November 6, 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

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

October 23, 2018 2 minutes read Hexagonal architecture is a model or pattern for designing software applications. The idea behind it is to put inputs and outputs at the edges...
Erik Dietrich October 23, 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

Shotgun Surgery: What It Is and How to Stop It

October 2, 2018 1 minutes read I really love the name “shotgun surgery” for describing a code smell.  It’s sort of an interesting mix of aggressive and comical, and so...
Erik Dietrich October 2, 2018

Onion Architecture: Going Beyond Layers

September 25, 2018 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 September 25, 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

You Should Favor Software Products That Include Support in the Price

September 11, 2018 1 minutes read Quite often we talk about architectural concerns on this blog, with topics like application layering or the merits of design patterns.  But today I’m...
Erik Dietrich September 11, 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

Layered Architecture: Still a Solid Approach

August 7, 2018 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 August 7, 2018

Autofac: A Detailed Look Under the Hood at Its Code Quality

July 31, 2018 1 minutes read In case you haven’t seen it, I’ve been diving ever-further down the code research rabbit hole.  Today it brings me to the Autofac codebase...
Erik Dietrich July 31, 2018

3 Design Patterns That Have Aged Poorly

July 10, 2018 1 minutes read Design patterns seem to be a controversial topic. On one hand, many developers seem to love them and treat the famous book by the Gang...
Erik Dietrich July 10, 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

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